/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 00018 #ifndef ROOTIOCNVSVC_H 00019 #define ROOTIOCNVSVC_H 00020 00021 #include "GaudiKernel/ConversionSvc.h" 00022 #include "GaudiKernel/IPersistencySvc.h" 00023 00024 #include "RootIOSvc/IRootIOSvc.h" 00025 #include "RootIOSvc/RootInputStream.h" 00026 #include "RootIOSvc/RootOutputStream.h" 00027 #include "RootIOSvc/RootIOAddress.h" 00028 00029 #include <string> 00030 #include <map> 00031 00032 class IDataManagerSvc; 00033 00034 class RootIOCnvSvc : public ConversionSvc, 00035 virtual public IRootIOSvc 00036 { 00037 public: 00038 RootIOCnvSvc(const std::string& name, ISvcLocator* svc); 00039 virtual ~RootIOCnvSvc(); 00040 00041 // Service interface: 00042 virtual StatusCode initialize(); 00043 virtual StatusCode reinitialize(); 00044 virtual StatusCode finalize(); 00045 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppint); 00046 00047 // ConversionSvc interface: 00048 00049 #if 0 00050 virtual StatusCode createObj(IOpaqueAddress* addr, DataObject*& obj); 00051 virtual StatusCode fillObjRefs(IOpaqueAddress* addr, DataObject* obj); 00052 #endif 00053 00056 virtual StatusCode createAddress(long svc_type, 00057 const CLID& clid, 00058 const std::string* par, 00059 const unsigned long* ip, 00060 IOpaqueAddress*& newAddr); 00061 00063 virtual IDataProviderSvc* dataSvc() { return m_dataSvc; } 00064 00066 virtual IDataManagerSvc* dataMgrSvc() { return m_dataMgr; } 00067 00068 // IRootIOSvc interface: 00069 00072 virtual StatusCode createAddress(DataObject* obj, 00073 RootOutputAddress*& newAddr); 00074 00078 RootOutputStream* outputStream(const RootOutputAddress& roa); 00079 00081 const std::string& outputFilename(const std::string& tespath); 00082 00084 void associateOutput(const char* filename, const char* streamname); 00085 00086 FileMap fileMap(); 00087 00091 RootInputStream* inputStream(const RootInputAddress& ria); 00092 00094 InputStreamMap& inputStreams() { return m_inputStreamMap; } 00095 00099 std::vector<std::string> inputFilenames(const std::string& tespath); 00100 00101 protected: 00102 00103 StatusCode doInitialize(); 00104 00109 std::map<std::string,std::string> m_outputFileMap; 00110 std::map<std::string,RootOutputStream*> m_outputStreamMap; 00111 00114 std::string m_defaultOutputFilename; 00115 00122 std::map<std::string,std::vector<std::string> > m_inputFileMap; 00123 InputStreamMap m_inputStreamMap; 00124 void initializeInputStream(const std::string& path, 00125 const std::string& filename); 00126 void initializeInputStream(const std::string& path, 00127 const std::vector<std::string>& filename_list); 00128 00131 std::vector<std::string> m_defaultInputFilenames; 00132 00134 std::string m_dataSvcName; 00135 IDataProviderSvc* m_dataSvc; 00136 IDataManagerSvc* m_dataMgr; 00137 00140 std::string m_majorIndex; 00141 00144 std::string m_minorIndex; 00145 private: 00146 00147 }; 00148 00149 #endif // ROOTIOCNVSVC_H