/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 00013 #ifndef DYBOUTPUTHEADERSVC_H 00014 #define DYBOUTPUTHEADERSVC_H 00015 00016 #include "DybKernel/IOutputHeaderSvc.h" 00017 00018 #include "GaudiKernel/Service.h" 00019 #include "GaudiKernel/IIncidentListener.h" 00020 #include "GaudiKernel/IIncidentSvc.h" 00021 00022 class Incident; 00023 namespace DayaBay { 00024 class HeaderObject; 00025 } 00026 class DybOutputHeaderSvc : public Service 00027 , virtual public IOutputHeaderSvc 00028 , virtual public IIncidentListener 00029 { 00030 public: 00031 DybOutputHeaderSvc(const std::string& name, ISvcLocator *svc); 00032 00033 virtual ~DybOutputHeaderSvc(); 00034 00035 StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface); 00036 00037 // IService 00038 virtual StatusCode initialize(); 00039 virtual StatusCode finalize(); 00040 //virtual StatusCode reinitialize(); 00041 00042 // IncidentListener 00043 virtual void handle(const Incident& incident); 00044 00045 // IOutputHeaderSvc 00046 00048 virtual OutputHeaders get(const DayaBay::IHeader& header); 00049 00051 std::string path(const DayaBay::IHeader& header); 00052 00054 virtual void clear(); 00055 00057 virtual void erase(const DayaBay::IHeader& header); 00058 00060 virtual void add(const DayaBay::IHeader& header); 00061 00062 00063 00064 private: 00065 00066 typedef std::map<const DayaBay::IHeader*,OutputHeaders> OutputHeaderMap; 00067 OutputHeaderMap m_ohmap; 00068 typedef std::map<const DayaBay::IHeader*,std::string> OutputHeaderNameMap; 00069 OutputHeaderNameMap m_names; 00070 std::string hostr(const DayaBay::HeaderObject& ho); 00071 void addHeaderName(const DayaBay::HeaderObject& ho); 00072 void removeHeaderName(const DayaBay::HeaderObject& ho); 00073 00074 OutputHeaderMap::iterator find(const DayaBay::IHeader& header); 00075 bool in(OutputHeaders& oh, const DayaBay::IHeader& header); 00076 IIncidentSvc* m_incsvc; 00077 }; 00078 00079 00080 #endif // DYBOUTPUTHEADERSVC_H