|
Gaudi Framework, version v21r8 |
| Home | Generated: 17 Mar 2010 |
#include <PoolDb/PoolDbCnvSvc.h>


Public Types | |
| typedef std::pair< void *, const ROOT::Reflex::Type > | ObjH |
| typedef std::map< std::string, DbH > | DbMap |
| typedef std::map< std::string, std::string > | DbFidMap |
Public Member Functions | |
| PoolDbCnvSvc (const std::string &name, ISvcLocator *svc) | |
| Standard constructor. | |
| virtual | ~PoolDbCnvSvc () |
| Standard destructor. | |
| virtual StatusCode | updateServiceState (IOpaqueAddress *pAddress) |
| Update state of the service. | |
| StatusCode | error (const std::string &msg, bool rethrow=true) |
| Standard way to print errors. | |
| StatusCode | setDataProvider (IDataProviderSvc *pDataSvc) |
| Connect to data provider service. | |
| virtual StatusCode | initialize () |
| ConversionSvc overload: initialize Db service. | |
| virtual StatusCode | finalize () |
| ConversionSvc overload: Finalize Db service. | |
| virtual IConverter * | createConverter (long typ, const CLID &wanted, const ICnvFactory *fac) |
| ConversionSvc overload: Create new Converter using factory. | |
| virtual void | loadConverter (DataObject *) |
| ConversionSvc overload: Load the class (dictionary) for the converter. | |
| virtual IPoolCacheSvc * | cacheSvc () const |
| Access to cache service. | |
| virtual StatusCode | accessStorageType (const std::string &type_string, long &gaudi_type) |
| Create access to the POOL persistency mechanism using the Gaudi String identifier. | |
| virtual StatusCode | connectOutput (const std::string &outputFile, const std::string &openMode) |
| Connect the output file to the service with open mode. | |
| StatusCode | connectDatabase (int typ, const std::string &outputFile, pool::DbAccessMode openMode, PoolDbDataConnection **con) |
| Connect the output file to the service with open mode. | |
| StatusCode | connectContainer (pool::DbDatabase &dbH, const std::string &cntName, pool::DbAccessMode openMode, const pool::DbTypeInfo *shape, pool::DbContainer &cntH) |
| Connect to a database container. | |
| virtual StatusCode | connectContainer (int typ, const std::string &dbName, const std::string &cntName, pool::DbAccessMode openMode, const pool::DbTypeInfo *shape, pool::DbContainer &cntH) |
| Connect to a database container. | |
| virtual StatusCode | connectOutput (const std::string &outputFile) |
| Connect the output file to the service. | |
| virtual StatusCode | commitOutput (const std::string &outputFile, bool do_commit) |
| Commit pending output. | |
| virtual StatusCode | connect (const std::string &dbName, const std::string &cntName, pool::DbContainer &cntH) |
| Connect to a database container in read mode. | |
| virtual StatusCode | disconnect (const std::string &dbName) |
| Disconnect from an existing data stream. | |
| virtual StatusCode | createAddress (long svc_type, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress) |
| IAddressCreator implementation: Address creation. | |
| virtual StatusCode | createAddress (pool::Token *pToken, PoolDbAddress **ppAddress) |
| IPoolDbMgr implementation: Address creation. | |
| virtual pool::DbSelect * | createSelect (const std::string &criteria, const std::string &dbName, const std::string &cntName) |
| Request an iterator over a container from the service. | |
| virtual pool::DbSelect * | createSelect (const std::string &criteria, pool::DbDatabase &dbH, const std::string &cntName) |
| Request an iterator over a container from the service. | |
| virtual StatusCode | markWrite (pool::DataCallBack *call, const std::string &cntName, PoolDbAddress **ppAddr=0) |
| Marks a reference to be written. | |
| virtual StatusCode | markUpdate (pool::DataCallBack *call, PoolDbAddress *pAddr) |
| Mark an object for update. | |
| virtual StatusCode | read (pool::DataCallBack *call, PoolDbAddress *pAddr) |
| Read existing object. | |
| virtual StatusCode | read (pool::DataCallBack *call, pool::Token &tok) |
| Read existing object. Open transaction in read mode if not active. | |
Protected Attributes | |
| std::string | m_cacheSvcName |
| Name of the POOL cache service instance to connect to. | |
| std::string | m_implementation |
| Name of the OODataBase implementation. | |
| std::string | m_serverConnect |
| Connection string to server. | |
| std::string | m_recordName |
| ROOT name of optional records triggering incident. | |
| bool | m_safeTransactions |
| Flag to indicate safe transactions if requested. | |
| std::vector< std::string > | m_domainOpts |
| Buffer for domain options. | |
| std::vector< std::string > | m_databaseOpts |
| Buffer for database options. | |
| std::vector< std::string > | m_containerOpts |
| Buffer for container options. | |
| IDataManagerSvc * | m_dataMgr |
| Services needed for proper operation: Data Manager. | |
| IPoolCacheSvc * | m_cacheSvc |
| Reference to POOL cache service. | |
| PoolDbDataConnection * | m_current |
| On writing: reference to active output stream. | |
| pool::DbDefaultDataHandler | m_handler |
| POOL Datahandler. | |
| pool::DbDomain | m_domH |
| POOL technology domain handle. | |
| std::string | m_shareFiles |
| Share files ? If set to YES, files will not be closed on finalize. | |
| bool | m_checkFIDs |
| Flag to enforce FID checking and verification. | |
| Gaudi::IFileCatalog * | m_catalog |
| Reference to the file catalog. | |
| Gaudi::IIODataManager * | m_ioMgr |
| Reference to the I/O data manager. | |
| IIncidentSvc * | m_incidentSvc |
| Reference to incident service. | |
| bool | m_incidentEnabled |
| Flag to enable incidents on FILE_OPEN. | |
Classes | |
| struct | DbH |
PoolDbCnvSvc class implementation definition.
Definition at line 46 of file PoolDbCnvSvc.h.
| typedef std::pair< void*, const ROOT::Reflex::Type > PoolDbCnvSvc::ObjH |
Definition at line 60 of file PoolDbCnvSvc.h.
| typedef std::map<std::string, DbH> PoolDbCnvSvc::DbMap |
Definition at line 61 of file PoolDbCnvSvc.h.
| typedef std::map<std::string, std::string> PoolDbCnvSvc::DbFidMap |
Definition at line 62 of file PoolDbCnvSvc.h.
| PoolDbCnvSvc::PoolDbCnvSvc | ( | const std::string & | name, | |
| ISvcLocator * | svc | |||
| ) |
Standard constructor.
| PoolDbCnvSvc::~PoolDbCnvSvc | ( | ) | [virtual] |
| StatusCode PoolDbCnvSvc::updateServiceState | ( | IOpaqueAddress * | pAddress | ) | [virtual] |
Update state of the service.
Reimplemented from ConversionSvc.
Definition at line 192 of file PoolDbCnvSvc.cpp.
00192 { 00193 return S_OK; 00194 }
| StatusCode PoolDbCnvSvc::error | ( | const std::string & | msg, | |
| bool | rethrow = true | |||
| ) |
| StatusCode PoolDbCnvSvc::setDataProvider | ( | IDataProviderSvc * | pDataSvc | ) | [virtual] |
Connect to data provider service.
Re-connects to data manager service.
| pDataSvc | New data provider object. |
Reimplemented from ConversionSvc.
Definition at line 254 of file PoolDbCnvSvc.cpp.
00254 { 00255 IDataManagerSvc* tmp = m_dataMgr; 00256 if (pDataSvc) { 00257 StatusCode status = 00258 pDataSvc->queryInterface(IDataManagerSvc::interfaceID(), pp_cast<void>(&m_dataMgr)); 00259 if ( !status.isSuccess() ) { 00260 return error("Cannot connect to \"IDataManagerSvc\" interface."); 00261 } 00262 } 00263 if ( tmp ) tmp->release(); 00264 return ConversionSvc::setDataProvider(pDataSvc); 00265 }
| StatusCode PoolDbCnvSvc::initialize | ( | ) | [virtual] |
ConversionSvc overload: initialize Db service.
Initialize the Db data persistency service.
Reimplemented from ConversionSvc.
Definition at line 106 of file PoolDbCnvSvc.cpp.
00106 { 00107 StatusCode status = ConversionSvc::initialize(); 00108 MsgStream log(msgSvc(), name()); 00109 if ( !status.isSuccess() ) { 00110 log << MSG::ERROR << "Failed to initialize ConversionSvc base class." 00111 << endmsg; 00112 return status; 00113 } 00114 status = accessStorageType(m_implementation, m_type); 00115 if ( !status.isSuccess() ) { 00116 log << MSG::ERROR << "Failed to connect to POOL implementation:" 00117 << m_implementation << endmsg; 00118 return status; 00119 } 00120 status = service(m_cacheSvcName, m_cacheSvc); 00121 if ( !status.isSuccess() ) { 00122 log << MSG::ERROR << "Failed to connect to POOL cache service:" 00123 << m_cacheSvcName << endmsg; 00124 return status; 00125 } 00126 status = service("IODataManager", m_ioMgr); 00127 if( !status.isSuccess() ) { 00128 log << MSG::ERROR 00129 << "Unable to localize interface from service:IODataManager" << endmsg; 00130 return status; 00131 } 00132 status = service("FileCatalog", m_catalog); 00133 if( !status.isSuccess() ) { 00134 log << MSG::ERROR 00135 << "Unable to localize interface from service:FileCatalog" << endmsg; 00136 return status; 00137 } 00138 status = service("IncidentSvc", m_incidentSvc); 00139 if( !status.isSuccess() ) { 00140 log << MSG::ERROR 00141 << "Unable to localize interface from service:IncidentSvc" << endmsg; 00142 return status; 00143 } 00144 DbOptionCallback cb(m_cacheSvc->callbackHandler()); 00145 if ( m_domH.open(m_cacheSvc->session(),m_type,pool::UPDATE).isSuccess() ) { 00146 SmartIF<IProperty> prp(m_ioMgr); 00147 IntegerProperty ageLimit; 00148 ageLimit.assign(prp->getProperty("AgeLimit")); 00149 log << MSG::DEBUG << "POOL agelimit is set to " << ageLimit.value() << endmsg; 00150 m_domH.setAgeLimit(ageLimit.value()); 00151 return S_OK; 00152 } 00153 return S_OK; 00154 }
| StatusCode PoolDbCnvSvc::finalize | ( | void | ) | [virtual] |
ConversionSvc overload: Finalize Db service.
Finalize the Db data persistency service.
Reimplemented from ConversionSvc.
Definition at line 157 of file PoolDbCnvSvc.cpp.
00157 { 00158 MsgStream log(msgSvc(),name()); 00159 DbOptionCallback cb(m_cacheSvc->callbackHandler()); 00160 if ( m_ioMgr ) { 00161 if ( ::toupper(m_shareFiles[0]) != 'Y' ) { 00162 IIODataManager::Connections cons = m_ioMgr->connections(this); 00163 for(IIODataManager::Connections::iterator i=cons.begin(); i != cons.end(); ++i) { 00164 if ( m_ioMgr->disconnect(*i).isSuccess() ) { 00165 log << MSG::INFO << "Disconnected data IO:" << (*i)->fid(); 00166 log << "[" << (*i)->pfn() << "]"; 00167 log << endmsg; 00168 delete (*i); 00169 } 00170 } 00171 } 00172 else { 00173 log << MSG::INFO << "File sharing enabled. Do not retire files." << endmsg; 00174 } 00175 m_ioMgr->release(); 00176 m_ioMgr = 0; 00177 } 00178 m_domH.close(); 00179 m_domH = 0; 00180 if ( m_dataMgr ) m_dataMgr->clearStore().ignore(); 00181 pool::releasePtr(m_incidentSvc); 00182 pool::releasePtr(m_dataMgr); 00183 pool::releasePtr(m_catalog); 00184 pool::releasePtr(m_cacheSvc); 00185 StatusCode status = ConversionSvc::finalize(); 00186 log << MSG::DEBUG << "POOL conversion service finalized " << name() << " "; 00187 log << (const char*)(status.isSuccess() ? "successfully" : "with errors") << endmsg; 00188 return status; 00189 }
| IConverter * PoolDbCnvSvc::createConverter | ( | long | typ, | |
| const CLID & | wanted, | |||
| const ICnvFactory * | fac | |||
| ) | [virtual] |
ConversionSvc overload: Create new Converter using factory.
Create new Converter using factory.
Reimplemented from ConversionSvc.
Definition at line 198 of file PoolDbCnvSvc.cpp.
00199 { 00200 IConverter* pConverter; 00201 ConverterID cnvid(POOL_StorageType, wanted); 00202 pConverter = PluginService::CreateWithId<IConverter*>(cnvid, typ, wanted, serviceLocator().get()); 00203 if ( 0 == pConverter ) { 00204 const CLID gen_clids[] = { 00205 /* ObjectList */ CLID_Any + CLID_ObjectList, 00206 /* ObjectVector */ CLID_Any + CLID_ObjectVector, 00207 /* Keyed Map */ CLID_Any + CLID_ObjectVector+0x00030000, 00208 /* Keyed Hashmap */ CLID_Any + CLID_ObjectVector+0x00040000, 00209 /* Keyed redirection array */ CLID_Any + CLID_ObjectVector+0x00050000, 00210 /* Standard, non-container */ CLID_Any 00211 }; 00212 for ( unsigned int i = 0; i < sizeof(gen_clids)/sizeof(gen_clids[0]); i++ ) { 00213 if ( (wanted>>16) == (gen_clids[i]>>16) ) { 00214 ConverterID cnvid1(POOL_StorageType, gen_clids[i]); 00215 pConverter = PluginService::CreateWithId<IConverter*>(cnvid1, typ, wanted, serviceLocator().get()); 00216 if ( 0 != pConverter ) { 00217 return pConverter; 00218 } 00219 } 00220 } 00221 // Check if a converter using object update is needed 00222 if ( (wanted>>24) != 0 ) { 00223 ConverterID cnvid1(POOL_StorageType, CLID_Any | 1<<31); 00224 pConverter = PluginService::CreateWithId<IConverter*>(cnvid1, typ, wanted, serviceLocator().get()); 00225 if ( 0 != pConverter ) { 00226 return pConverter; 00227 } 00228 } 00229 // If we do not have found any suitable container after searching 00230 // for standard containers, we will use the "ANY" converter 00231 // ... and pray for everything will go well. 00232 ConverterID cnvid1(POOL_StorageType, CLID_Any); 00233 pConverter = PluginService::CreateWithId<IConverter*>(cnvid1, typ, wanted, serviceLocator().get()); 00234 if ( 0 != pConverter ) { 00235 MsgStream log(msgSvc(), name()); 00236 log << MSG::INFO << "Using \"Any\" converter " 00237 << "for objects of type " 00238 << std::showbase << std::hex << wanted << endmsg; 00239 } 00240 } 00241 return pConverter; 00242 }
| void PoolDbCnvSvc::loadConverter | ( | DataObject * | pObject | ) | [virtual] |
ConversionSvc overload: Load the class (dictionary) for the converter.
Reimplemented from ConversionSvc.
Definition at line 244 of file PoolDbCnvSvc.cpp.
00244 { 00245 if (pObject) { 00246 MsgStream log(msgSvc(), name()); 00247 std::string cname = System::typeinfoName(typeid(*pObject)); 00248 log << MSG::DEBUG << "Trying to 'Autoload' dictionary for class " << cname << endmsg; 00249 gInterpreter->EnableAutoLoading(); 00250 gInterpreter->AutoLoad(cname.c_str()); 00251 } 00252 }
| virtual IPoolCacheSvc* PoolDbCnvSvc::cacheSvc | ( | ) | const [inline, virtual] |
Access to cache service.
Implements IPoolDbMgr.
Definition at line 162 of file PoolDbCnvSvc.h.
00162 { return m_cacheSvc; }
| virtual StatusCode PoolDbCnvSvc::accessStorageType | ( | const std::string & | type_string, | |
| long & | gaudi_type | |||
| ) | [virtual] |
Create access to the POOL persistency mechanism using the Gaudi String identifier.
Also all appropriate DLLS will be loaded on the fly.
Implements IPoolDbMgr.
| virtual StatusCode PoolDbCnvSvc::connectOutput | ( | const std::string & | outputFile, | |
| const std::string & | openMode | |||
| ) | [virtual] |
Connect the output file to the service with open mode.
| outputFile | String containing output file | |
| openMode | String containing opening mode of the output file |
Reimplemented from ConversionSvc.
| StatusCode PoolDbCnvSvc::connectDatabase | ( | int | typ, | |
| const std::string & | outputFile, | |||
| pool::DbAccessMode | openMode, | |||
| PoolDbDataConnection ** | con | |||
| ) |
Connect the output file to the service with open mode.
| outputFile | String containing output file | |
| openMode | Opening mode of the output file | |
| con | Data connection reference |
| StatusCode PoolDbCnvSvc::connectContainer | ( | pool::DbDatabase & | dbH, | |
| const std::string & | cntName, | |||
| pool::DbAccessMode | openMode, | |||
| const pool::DbTypeInfo * | shape, | |||
| pool::DbContainer & | cntH | |||
| ) |
Connect to a database container.
| dbH | Handle to hosting database | |
| cntName | String containing the name of the container object | |
| openMode | Open mode (READ,WRITE,UPDATE,...) | |
| shape | Default shape of objects in the container | |
| cntH | Reference to the POOL container object |
| virtual StatusCode PoolDbCnvSvc::connectContainer | ( | int | typ, | |
| const std::string & | dbName, | |||
| const std::string & | cntName, | |||
| pool::DbAccessMode | openMode, | |||
| const pool::DbTypeInfo * | shape, | |||
| pool::DbContainer & | cntH | |||
| ) | [virtual] |
Connect to a database container.
| typ | Database technology type | |
| dbName | String containing name of the database | |
| cntName | String containing the name of the container object | |
| openMode | Open mode (READ,WRITE,UPDATE,...) | |
| shape | Default shape of objects in the container | |
| cntH | Reference to the POOL container object |
Implements IPoolDbMgr.
| virtual StatusCode PoolDbCnvSvc::connectOutput | ( | const std::string & | outputFile | ) | [virtual] |
Connect the output file to the service.
| outputFile | String containing output file |
Reimplemented from ConversionSvc.
| virtual StatusCode PoolDbCnvSvc::commitOutput | ( | const std::string & | outputFile, | |
| bool | do_commit | |||
| ) | [virtual] |
Commit pending output.
| outputFile | String containing output file | |
| do_commit | if true commit the output and flush eventually pending items to the database if false, discard pending buffers. Note: The possibility to commit or rollback depends on the database technology used! |
Reimplemented from ConversionSvc.
| virtual StatusCode PoolDbCnvSvc::connect | ( | const std::string & | dbName, | |
| const std::string & | cntName, | |||
| pool::DbContainer & | cntH | |||
| ) | [virtual] |
Connect to a database container in read mode.
| dbName | String containing name of the database | |
| cntName | String containing the name of the container object | |
| cntH | Reference to the POOL container object |
Implements IPoolDbMgr.
| virtual StatusCode PoolDbCnvSvc::disconnect | ( | const std::string & | dbName | ) | [virtual] |
Disconnect from an existing data stream.
| dbName | String containing name of the database |
Implements IPoolDbMgr.
| StatusCode PoolDbCnvSvc::createAddress | ( | long | svc_type, | |
| const CLID & | clid, | |||
| const std::string * | par, | |||
| const unsigned long * | ip, | |||
| IOpaqueAddress *& | refpAddress | |||
| ) | [virtual] |
IAddressCreator implementation: Address creation.
Create an address using the link information together with the triple (database name/container name/object name).
| refLink | Reference to abstract link information | |
| dbName | Database name | |
| containerName | Object container name | |
| refpAddress | Opaque address information to retrieve object |
Reimplemented from ConversionSvc.
Definition at line 517 of file PoolDbCnvSvc.cpp.
00522 { 00523 PoolDbAddress* pA = 0; 00524 pool::Guid guid = pool::Guid::null(); 00525 std::auto_ptr<pool::Token> tok(new pool::Token()); 00526 guid.Data1 = clid; 00527 tok->setDb(par[0]); 00528 tok->setCont(par[1]); 00529 tok->setTechnology(typ); 00530 tok->setClassID(guid); 00531 tok->oid().first = ip[0]; 00532 tok->oid().second = ip[1]; 00533 if ( createAddress(tok.get(), &pA).isSuccess() ) { 00534 refpAddress = pA; 00535 tok->release(); 00536 tok.release(); 00537 return S_OK; 00538 } 00539 return error("createAddress> Failed to create opaque address."); 00540 }
| StatusCode PoolDbCnvSvc::createAddress | ( | pool::Token * | pToken, | |
| PoolDbAddress ** | ppAddress | |||
| ) | [virtual] |
IPoolDbMgr implementation: Address creation.
Create an address using an existing POOL token object.
| pToken | Reference to valid POOL token object. | |
| ppAddress | Opaque address information to retrieve object |
Implements IPoolDbMgr.
Definition at line 543 of file PoolDbCnvSvc.cpp.
00543 { 00544 if ( pTok ) { 00545 *ppAdd = new PoolDbAddress(pTok); 00546 return S_OK; 00547 } 00548 return error("createAddress> Failed to create opaque address from POOL token."); 00549 }
| virtual pool::DbSelect* PoolDbCnvSvc::createSelect | ( | const std::string & | criteria, | |
| const std::string & | dbName, | |||
| const std::string & | cntName | |||
| ) | [virtual] |
Request an iterator over a container from the service.
| criteria | Selection criteria to restrict iteration | |
| dbName | String containing name of the database | |
| cntName | String containing the name of the container object |
Implements IPoolDbMgr.
| virtual pool::DbSelect* PoolDbCnvSvc::createSelect | ( | const std::string & | criteria, | |
| pool::DbDatabase & | dbH, | |||
| const std::string & | cntName | |||
| ) | [virtual] |
Request an iterator over a container from the service.
| criteria | Selection criteria to restrict iteration | |
| dbH | Handle to POOL database | |
| cntName | String containing the name of the container object |
| virtual StatusCode PoolDbCnvSvc::markWrite | ( | pool::DataCallBack * | call, | |
| const std::string & | cntName, | |||
| PoolDbAddress ** | ppAddr = 0 | |||
| ) | [virtual] |
Marks a reference to be written.
| call | Pointer to callback object | |
| cntName | Container name the object should be written to. | |
| refpAddr | Persistent object location to be used for link setup. |
Implements IPoolDbMgr.
| StatusCode PoolDbCnvSvc::markUpdate | ( | pool::DataCallBack * | call, | |
| PoolDbAddress * | pAddr | |||
| ) | [virtual] |
Mark an object for update.
| call | Pointer to callback object | |
| pAddr | Persistent object location to be used for link setup. |
Implements IPoolDbMgr.
Definition at line 598 of file PoolDbCnvSvc.cpp.
00598 { 00599 if ( pA && call ) { 00600 pool::Token* tok = pA->token(); 00601 DbContainer cntH(POOL_StorageType); 00602 const DbTypeInfo* info = (const DbTypeInfo*)call->shape(); 00603 StatusCode sc = connectContainer(FID,tok->dbID(),tok->contID(),pool::UPDATE,info,cntH); 00604 if ( sc.isSuccess() ) { 00605 call->setHandler(&m_handler); 00606 if ( cntH.update(call, tok->oid()).isSuccess() ) { 00607 return S_OK; 00608 } 00609 return error("markUpdate> Failed to update object:"+tok->toString()); 00610 } 00611 MsgStream log(msgSvc(), name()); 00612 log << MSG::ERROR << "markUpdate> The container " 00613 << tok->dbID() << "::" << tok->contID() 00614 << " cannot be accessed." << endmsg 00615 << "Was this object really read from the container " 00616 << "the object token claims?" 00617 << endmsg; 00618 return S_FAIL; 00619 } 00620 return error("createRep> Invalid object address for update."); 00621 }
| StatusCode PoolDbCnvSvc::read | ( | pool::DataCallBack * | call, | |
| PoolDbAddress * | pAddr | |||
| ) | [virtual] |
Read existing object.
Read existing object. Open transaction in read mode if not active.
Open transaction in read mode if not active.
| call | Pointer to callback object | |
| pAddr | Pointer to valid object address. |
Implements IPoolDbMgr.
Definition at line 624 of file PoolDbCnvSvc.cpp.
00624 { 00625 StatusCode sc = read(call, *pA->token()); 00626 if ( sc.isSuccess() || sc == BAD_DATA_CONNECTION ) { 00627 return sc; 00628 } 00629 std::string err="read> Cannot read object:"+pA->registry()->identifier()+" "; 00630 return error(err, false); 00631 }
| StatusCode PoolDbCnvSvc::read | ( | pool::DataCallBack * | call, | |
| pool::Token & | tok | |||
| ) | [virtual] |
Read existing object. Open transaction in read mode if not active.
| call | Pointer to callback object | |
| tok | Reference to pool token describing the object |
Implements IPoolDbMgr.
Definition at line 634 of file PoolDbCnvSvc.cpp.
00634 { 00635 try { 00636 DbContainer cntH(tok.technology()); 00637 const DbTypeInfo* info = (const DbTypeInfo*)call->shape(); 00638 StatusCode sc = connectContainer(FID,tok.dbID(),tok.contID(),pool::READ,info,cntH); 00639 if ( sc.isSuccess() ) { 00640 typedef pool::DbObjectHandle<pool::DbObject> ObjH; 00641 call->setHandler(&m_handler); 00642 return ObjH::openEx(cntH, tok, call, pool::READ).isSuccess() ? S_OK : S_FAIL; 00643 } 00644 else if ( sc == BAD_DATA_CONNECTION ) { 00645 return sc; 00646 } 00647 } 00648 catch (std::exception& e) { 00649 std::string err="read> Cannot read object:"+tok.toString()+" "; 00650 return error(err+e.what(), false); 00651 } 00652 catch (...) { 00653 std::string err = "read> Cannot read object:"+tok.toString(); 00654 return error(err+" [Unknown fatal exception]", false); 00655 } 00656 return error("read> Cannot read object:"+tok.toString(), false); 00657 }
std::string PoolDbCnvSvc::m_cacheSvcName [protected] |
Name of the POOL cache service instance to connect to.
Definition at line 66 of file PoolDbCnvSvc.h.
std::string PoolDbCnvSvc::m_implementation [protected] |
std::string PoolDbCnvSvc::m_serverConnect [protected] |
std::string PoolDbCnvSvc::m_recordName [protected] |
bool PoolDbCnvSvc::m_safeTransactions [protected] |
std::vector<std::string> PoolDbCnvSvc::m_domainOpts [protected] |
std::vector<std::string> PoolDbCnvSvc::m_databaseOpts [protected] |
std::vector<std::string> PoolDbCnvSvc::m_containerOpts [protected] |
IDataManagerSvc* PoolDbCnvSvc::m_dataMgr [protected] |
IPoolCacheSvc* PoolDbCnvSvc::m_cacheSvc [protected] |
PoolDbDataConnection* PoolDbCnvSvc::m_current [protected] |
pool::DbDefaultDataHandler PoolDbCnvSvc::m_handler [protected] |
pool::DbDomain PoolDbCnvSvc::m_domH [protected] |
std::string PoolDbCnvSvc::m_shareFiles [protected] |
Share files ? If set to YES, files will not be closed on finalize.
Definition at line 105 of file PoolDbCnvSvc.h.
bool PoolDbCnvSvc::m_checkFIDs [protected] |
Gaudi::IFileCatalog* PoolDbCnvSvc::m_catalog [protected] |
Gaudi::IIODataManager* PoolDbCnvSvc::m_ioMgr [protected] |
IIncidentSvc* PoolDbCnvSvc::m_incidentSvc [protected] |
bool PoolDbCnvSvc::m_incidentEnabled [protected] |