00001 00013 #ifndef STAGEDATAMANAGER 00014 #define STAGEDATAMANAGER 00015 00016 #include "Stage/IStageDataManager.h" 00017 #include "Stage/IStageData.h" 00018 #include "GaudiKernel/Service.h" 00019 00020 #include <map> 00021 #include <string> 00022 00023 class IDataProviderSvc; 00024 00025 class StageDataManager : public Service, 00026 virtual public IStageDataManager 00027 { 00028 public: 00029 StageDataManager(const std::string& name, ISvcLocator* svc); 00030 virtual ~StageDataManager(); 00031 00033 virtual StatusCode initialize(); 00034 virtual StatusCode finalize(); 00035 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppint); 00036 00038 00041 StatusCode registerData(const std::string& location, IStageData& sd); 00042 00044 StatusCode consumeData(IStageData& sd); 00045 00046 00047 private: 00048 00049 void find_and_flush(const DayaBay::HeaderObject* ho); 00050 00051 // map location to a time-ordered list 00052 typedef std::map<std::string, IStageDataList> LocDataListMap; 00053 LocDataListMap m_cache; 00054 00055 IDataProviderSvc* m_evtsvc; 00056 }; 00057 00058 #endif // STAGEDATAMANAGER