00001 #ifndef RAWDATAEVTSELECTOR_H 00002 #define RAWDATAEVTSELECTOR_H 00003 00004 #include "GaudiKernel/Service.h" 00005 #include "GaudiKernel/IEvtSelector.h" 00006 00007 // forward declarations 00008 class IRawDataInputSvc; 00009 00010 class RawDataEvtSelector : public Service, 00011 virtual public IEvtSelector 00012 { 00013 class Context : public IEvtSelector::Context 00014 { 00015 const RawDataEvtSelector* m_evtSel; 00016 public: 00017 int m_entry; 00018 00019 Context(const RawDataEvtSelector* evtsel) 00020 : m_evtSel(evtsel), m_entry(-1) {} 00021 00022 virtual ~Context() {} 00023 00024 virtual void* identifier() const { 00025 return (void*)m_evtSel; 00026 } 00027 }; 00028 00029 public: 00030 RawDataEvtSelector(const std::string& name, ISvcLocator* svcloc); 00031 virtual ~RawDataEvtSelector(); 00032 00033 // Implementation of Service base class methods. 00034 virtual StatusCode initialize(); 00035 virtual StatusCode finalize(); 00036 00037 // Implementation of the IEvtSelector interface methods. 00038 virtual StatusCode createContext(IEvtSelector::Context*& it) const; 00039 virtual StatusCode next(IEvtSelector::Context& it) const; 00040 virtual StatusCode next(IEvtSelector::Context& it, int jump) const; 00041 virtual StatusCode previous(IEvtSelector::Context& it) const; 00042 virtual StatusCode previous(IEvtSelector::Context& it, int jump) const; 00043 00044 virtual StatusCode last(IEvtSelector::Context& it) const; 00045 virtual StatusCode rewind(IEvtSelector::Context& it) const; 00046 00047 virtual StatusCode createAddress(const IEvtSelector::Context& it, IOpaqueAddress*& iop) const; 00048 virtual StatusCode releaseContext(IEvtSelector::Context*& it) const; 00049 virtual StatusCode resetCriteria(const std::string& criteria, IEvtSelector::Context& ct) const; 00050 00051 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface); 00052 00053 virtual StatusCode setEntry(RawDataEvtSelector::Context& rc, int entry) const; 00054 00055 private: 00056 IRawDataInputSvc* m_rawSvc; 00057 }; 00058 00059 #endif 00060 00061