00001 //===================================================================== 00002 // RawDataSelector.h 00003 //===================================================================== 00004 // 00005 // Description: An event selector service that steps through Event 00006 // Filter packed raw events by use of an event source 00007 // object and an iterator object called RawDataIterator. 00008 // The type of event source is specified at run time. It 00009 // can be a single file, a set of files or the network. 00010 // 00011 //--------------------------------------------------------------------- 00012 00013 #ifndef RAWDATA_SELECTOR_H 00014 #define RAWDATA_SELECTOR_H 00015 00016 // Include files. 00017 #include <string> 00018 #include "GaudiKernel/Service.h" 00019 #include "GaudiKernel/IEvtSelector.h" 00020 #include "GaudiKernel/IProperty.h" 00021 00022 00023 // Forward declarations. 00024 class IAddressCreator; 00025 class ISvcLocator; 00026 class RawDataContext; 00027 class IRawDataInputSvc; 00028 00029 // Class RawDataSelector. 00030 class RawDataSelector : virtual public Service, 00031 virtual public IEvtSelector, 00032 virtual public IProperty 00033 { 00034 00035 public: 00036 00037 // Standard Constructor. 00038 RawDataSelector(const std::string& name, ISvcLocator* svcloc); 00039 00040 // Standard Destructor. 00041 ~RawDataSelector(); 00042 00043 // Implementation of Service base class methods. 00044 virtual StatusCode initialize(); 00045 00046 // Implementation of the IEvtSelector interface methods. 00047 virtual StatusCode createContext(Context*& it) const; 00048 virtual StatusCode next(Context& it) const; 00049 virtual StatusCode next(Context& it, int jump) const; 00050 virtual StatusCode previous(Context& it) const; 00051 virtual StatusCode previous(Context& it, int jump) const; 00052 00053 virtual StatusCode last(Context& it) const; 00054 virtual StatusCode rewind(Context& it) const; 00055 00056 virtual StatusCode createAddress(const Context& it,IOpaqueAddress*& iop) const; 00057 virtual StatusCode releaseContext(Context*& it) const; 00058 virtual StatusCode resetCriteria(const std::string& criteria, Context& context) const; 00059 00060 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface); 00061 00062 private: 00063 00064 IRawDataInputSvc* m_eventSource; 00065 RawDataContext* m_beginContext; 00066 RawDataContext* m_endContext; 00067 IAddressCreator* m_addressCreator; 00068 std::string m_eventSourceName; 00069 00070 00071 }; 00072 00073 #endif // RAWDATA_SELECTOR_H