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
00113 virtual StatusCode initialize();
00114
00116 virtual StatusCode finalize();
00117
00119 virtual IConverter* createConverter(long typ,
00120 const CLID& wanted,
00121 const ICnvFactory* fac);
00122
00124 virtual void loadConverter(DataObject* pObj);
00125
00132 virtual StatusCode connectOutput(const std::string& outputFile,
00133 const std::string& openMode);
00134
00140 virtual StatusCode connectOutput(const std::string& outputFile);
00141
00152 virtual StatusCode commitOutput(const std::string& outputFile,
00153 bool do_commit);
00154
00160 virtual StatusCode disconnect(const std::string& dbName);
00161
00173 virtual StatusCode createAddress( long svc_type,
00174 const CLID& clid,
00175 const std::string* par,
00176 const unsigned long* ip,
00177 IOpaqueAddress*& refpAddress);
00178
00188 virtual StatusCode createAddress( long svc_type,
00189 const CLID& clid,
00190 const std::string& refAddress,
00191 IOpaqueAddress*& refpAddress) {
00192 return this->ConversionSvc::createAddress(svc_type,clid,refAddress,refpAddress);
00193 }
00194
00201 virtual StatusCode createNullRep(const std::string& path);
00202
00209 virtual StatusCode createNullRef(const std::string& path);
00210
00218 virtual StatusCode i__createRep(DataObject* pObj, IOpaqueAddress*& refpAddr);
00219
00220
00228 virtual StatusCode i__fillRepRefs(IOpaqueAddress* pAddr,DataObject* pObj);
00229
00237 virtual StatusCode i__createObj(IOpaqueAddress* pAddr, DataObject*& refpObj);
00238
00246 virtual StatusCode i__fillObjRefs(IOpaqueAddress* pAddr, DataObject* pObj);
00247 };
00248 }
00249
00250 #endif // GAUDIROOTCNV_GAUDIROOTCNVSVC_H