00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef DBCNV_DBCNVSVC_H
00012 #define DBCNV_DBCNVSVC_H
00013
00014
00015
00016 #include "GaudiKernel/AddrFactory.h"
00017 #include "GaudiKernel/ConversionSvc.h"
00018
00019
00020 #include "GaudiDb/IDataBaseMgr.h"
00021 #include "GaudiDb/DbSession.h"
00022 #include "GaudiDb/DbDataBase.h"
00023 #include "GaudiDb/DbFederation.h"
00024
00025
00026 template <class ConcreteService> class SvcFactory;
00027 class IOODataBase;
00028
00052 class DbCnvSvc : public ConversionSvc,
00053 virtual public IDataBaseMgr,
00054 virtual public IAddrFactory
00055 {
00057 friend SvcFactory<DbCnvSvc>;
00058 protected:
00060 IOODataBase* m_dbase;
00062 dbHandle<DbSession> m_session;
00064 dbHandle<DbFederation> m_federation;
00066 dbHandle<DbDataBase> m_output;
00068 std::string m_fddbName;
00070 std::string m_implementation;
00072 std::string m_serverConnect;
00074 DbCnvSvc(const std::string& name, ISvcLocator* svc);
00076 virtual ~DbCnvSvc();
00077
00078 public:
00080 virtual StatusCode queryInterface(const IID& riid, void** ppvInterface);
00082 virtual StatusCode initialize();
00084 virtual StatusCode finalize();
00086 virtual const ICnvFactory* findCnvFactory(const CLID& wanted);
00088 virtual IConverter* createConverter(const ICnvFactory& fac);
00089
00091 virtual dbHandle<DbDataBase>& defaultDbHdl() {
00092 return m_output;
00093 }
00095 virtual dbHandle<DbSession>& defaultSessionHdl() {
00096 return m_session;
00097 }
00099 virtual dbHandle<DbFederation>& defaultFederationHdl() {
00100 return m_federation;
00101 }
00106 virtual StatusCode connectOutput(const std::string& fname);
00107
00114 virtual IOpaqueAddress* instantiate(const CLID& ,
00115 const std::string& ,
00116 const std::string& ,
00117 int ) const {
00118 return 0;
00119 }
00130 virtual IOpaqueAddress* instantiate(const GenericLinkBase& link,
00131 const std::string& dbName,
00132 const std::string& containerName,
00133 const std::string& objectName) const;
00138 virtual StatusCode requestImplementation(IOODataBase*& accessor);
00140 virtual IOODataBase* implementation();
00147 virtual dbIter<DbObject>* createIterator(const std::string& dbName, const std::string& cntName, DbAccessMode mode);
00148 };
00149
00150 #endif // DBCNV_DBCNVSVC_H