Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef GAUDIROOTCNV_GAUDIROOTCNVSVC_H
00009 #define GAUDIROOTCNV_GAUDIROOTCNVSVC_H
00010
00011
00012
00013 #include "GaudiKernel/ConversionSvc.h"
00014 #include "GaudiKernel/DataObject.h"
00015 #include "GaudiKernel/ClassID.h"
00016
00017
00018 #include <set>
00019
00020
00021 class IDataManagerSvc;
00022 class IIncidentSvc;
00023 class TClass;
00024
00025
00026
00027
00028 namespace Gaudi {
00029
00030
00031 class IIODataManager;
00032 class IDataConnection;
00033 class RootDataConnection;
00034 class RootConnectionSetup;
00035
00046 class GAUDI_API RootCnvSvc : public ConversionSvc {
00047 protected:
00048
00050 Gaudi::IIODataManager* m_ioMgr;
00052 IIncidentSvc* m_incidentSvc;
00054 Gaudi::RootDataConnection* m_current;
00056 TClass* m_classRefs;
00058 TClass* m_classDO;
00060 RootConnectionSetup* m_setup;
00062 std::string m_currSection;
00063
00065 bool m_incidentEnabled;
00067 std::string m_shareFiles;
00069 std::string m_recordName;
00071 std::string m_ioPerfStats;
00073 std::string m_compression;
00075 std::set<std::string> m_badFiles;
00076
00078 MsgStream* m_log;
00079
00081 TClass* getClass(DataObject* pObject);
00083 MsgStream& log() const { return *m_log; }
00084
00085 public:
00086
00088 RootCnvSvc(const std::string& name, ISvcLocator* svc);
00089
00091 virtual ~RootCnvSvc();
00092
00094 virtual StatusCode updateServiceState(IOpaqueAddress* )
00095 { return StatusCode::SUCCESS; }
00096
00102 StatusCode error(const std::string& msg);
00103
00110 StatusCode connectDatabase(const std::string& dataset, int mode, RootDataConnection** con);
00111
00112 public:
00113
00115
00116
00118 virtual StatusCode initialize();
00119
00121 virtual StatusCode finalize();
00122
00124 virtual IConverter* createConverter(long typ,
00125 const CLID& wanted,
00126 const ICnvFactory* fac);
00127
00129 virtual void loadConverter(DataObject* pObj);
00130
00137 virtual StatusCode connectOutput(const std::string& outputFile,
00138 const std::string& openMode);
00139
00145 virtual StatusCode connectOutput(const std::string& outputFile);
00146
00157 virtual StatusCode commitOutput(const std::string& outputFile,
00158 bool do_commit);
00159
00165 virtual StatusCode disconnect(const std::string& dbName);
00166
00178 virtual StatusCode createAddress( long svc_type,
00179 const CLID& clid,
00180 const std::string* par,
00181 const unsigned long* ip,
00182 IOpaqueAddress*& refpAddress);
00183
00193 virtual StatusCode createAddress( long svc_type,
00194 const CLID& clid,
00195 const std::string& refAddress,
00196 IOpaqueAddress*& refpAddress) {
00197 return this->ConversionSvc::createAddress(svc_type,clid,refAddress,refpAddress);
00198 }
00199
00206 virtual StatusCode createNullRep(const std::string& path);
00207
00214 virtual StatusCode createNullRef(const std::string& path);
00215
00223 virtual StatusCode i__createRep(DataObject* pObj, IOpaqueAddress*& refpAddr);
00224
00225
00233 virtual StatusCode i__fillRepRefs(IOpaqueAddress* pAddr,DataObject* pObj);
00234
00242 virtual StatusCode i__createObj(IOpaqueAddress* pAddr, DataObject*& refpObj);
00243
00251 virtual StatusCode i__fillObjRefs(IOpaqueAddress* pAddr, DataObject* pObj);
00252 };
00253 }
00254
00255 #endif // GAUDIROOTCNV_GAUDIROOTCNVSVC_H