![]() |
|
|
Generated: 8 Jan 2009 |
#include <PoolDb/PoolDbCnvSvc.h>


PoolDbCnvSvc class implementation definition.
Definition at line 46 of file 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 | queryInterface (const InterfaceID &riid, void **ppvInterface) |
| ConversionSvc overload: Query interface. | |
| 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. | |
| 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 |
| typedef std::pair< void*, const ROOT::Reflex::Type > PoolDbCnvSvc::ObjH |
Definition at line 61 of file PoolDbCnvSvc.h.
| typedef std::map<std::string, DbH> PoolDbCnvSvc::DbMap |
Definition at line 62 of file PoolDbCnvSvc.h.
| typedef std::map<std::string, std::string> PoolDbCnvSvc::DbFidMap |
Definition at line 63 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 204 of file PoolDbCnvSvc.cpp.
00204 { 00205 return S_OK; 00206 }
| StatusCode PoolDbCnvSvc::error | ( | const std::string & | msg, | |
| bool | rethrow = true | |||
| ) |
Standard way to print errors.
after the printout an exception is thrown.
| msg | [IN] Message string to be printed. | |
| rethrow | [IN] Flag to indicate if an exception should be thrown |
| 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 266 of file PoolDbCnvSvc.cpp.
00266 { 00267 IDataManagerSvc* tmp = m_dataMgr; 00268 if (pDataSvc) { 00269 StatusCode status = 00270 pDataSvc->queryInterface(IID_IDataManagerSvc, pp_cast<void>(&m_dataMgr)); 00271 if ( !status.isSuccess() ) { 00272 return error("Cannot connect to \"IDataManagerSvc\" interface."); 00273 } 00274 } 00275 if ( tmp ) tmp->release(); 00276 return ConversionSvc::setDataProvider(pDataSvc); 00277 }
| StatusCode PoolDbCnvSvc::queryInterface | ( | const InterfaceID & | riid, | |
| void ** | ppvInterface | |||
| ) | [virtual] |
ConversionSvc overload: Query interface.
Query interface.
Reimplemented from ConversionSvc.
Definition at line 107 of file PoolDbCnvSvc.cpp.
00107 { 00108 if ( IID_IPoolDbMgr == riid ) { 00109 *ppvInterface = (IPoolDbMgr*)this; 00110 addRef(); 00111 return S_OK; 00112 } 00113 // Interface is not directly availible: try out a base class 00114 return ConversionSvc::queryInterface(riid, ppvInterface); 00115 }
| StatusCode PoolDbCnvSvc::initialize | ( | ) | [virtual] |
ConversionSvc overload: initialize Db service.
Initialize the Db data persistency service.
Reimplemented from ConversionSvc.
Definition at line 118 of file PoolDbCnvSvc.cpp.
00118 { 00119 StatusCode status = ConversionSvc::initialize(); 00120 MsgStream log(messageService(), name()); 00121 if ( !status.isSuccess() ) { 00122 log << MSG::ERROR << "Failed to initialize ConversionSvc base class." 00123 << endmsg; 00124 return status; 00125 } 00126 status = accessStorageType(m_implementation, m_type); 00127 if ( !status.isSuccess() ) { 00128 log << MSG::ERROR << "Failed to connect to POOL implementation:" 00129 << m_implementation << endmsg; 00130 return status; 00131 } 00132 status = service(m_cacheSvcName, m_cacheSvc); 00133 if ( !status.isSuccess() ) { 00134 log << MSG::ERROR << "Failed to connect to POOL cache service:" 00135 << m_cacheSvcName << endmsg; 00136 return status; 00137 } 00138 status = service("IODataManager", m_ioMgr); 00139 if( !status.isSuccess() ) { 00140 log << MSG::ERROR 00141 << "Unable to localize interface from service:IODataManager" << endreq; 00142 return status; 00143 } 00144 status = service("FileCatalog", m_catalog); 00145 if( !status.isSuccess() ) { 00146 log << MSG::ERROR 00147 << "Unable to localize interface from service:FileCatalog" << endreq; 00148 return status; 00149 } 00150 status = service("IncidentSvc", m_incidentSvc); 00151 if( !status.isSuccess() ) { 00152 log << MSG::ERROR 00153 << "Unable to localize interface from service:IncidentSvc" << endreq; 00154 return status; 00155 } 00156 DbOptionCallback cb(m_cacheSvc->callbackHandler()); 00157 if ( m_domH.open(m_cacheSvc->session(),m_type,pool::UPDATE).isSuccess() ) { 00158 SmartIF<IProperty> prp(m_ioMgr); 00159 IntegerProperty ageLimit; 00160 ageLimit.assign(prp->getProperty("AgeLimit")); 00161 log << MSG::DEBUG << "POOL agelimit is set to " << ageLimit.value() << endmsg; 00162 m_domH.setAgeLimit(ageLimit.value()); 00163 return S_OK; 00164 } 00165 return S_OK; 00166 }
| StatusCode PoolDbCnvSvc::finalize | ( | void | ) | [virtual] |
ConversionSvc overload: Finalize Db service.
Finalize the Db data persistency service.
Reimplemented from ConversionSvc.
Definition at line 169 of file PoolDbCnvSvc.cpp.
00169 { 00170 MsgStream log(messageService(),name()); 00171 DbOptionCallback cb(m_cacheSvc->callbackHandler()); 00172 if ( m_ioMgr ) { 00173 if ( ::toupper(m_shareFiles[0]) != 'Y' ) { 00174 IIODataManager::Connections cons = m_ioMgr->connections(this); 00175 for(IIODataManager::Connections::iterator i=cons.begin(); i != cons.end(); ++i) { 00176 if ( m_ioMgr->disconnect(*i).isSuccess() ) { 00177 log << MSG::INFO << "Disconnected data IO:" << (*i)->fid(); 00178 log << "[" << (*i)->pfn() << "]"; 00179 log << endmsg; 00180 delete (*i); 00181 } 00182 } 00183 } 00184 else { 00185 log << MSG::INFO << "File sharing enabled. Do not retire files." << endmsg; 00186 } 00187 m_ioMgr->release(); 00188 m_ioMgr = 0; 00189 } 00190 m_domH.close(); 00191 m_domH = 0; 00192 if ( m_dataMgr ) m_dataMgr->clearStore().ignore(); 00193 pool::releasePtr(m_incidentSvc); 00194 pool::releasePtr(m_dataMgr); 00195 pool::releasePtr(m_catalog); 00196 pool::releasePtr(m_cacheSvc); 00197 StatusCode status = ConversionSvc::finalize(); 00198 log << MSG::DEBUG << "POOL conversion service finalized " << name() << " "; 00199 log << (const char*)(status.isSuccess() ? "successfully" : "with errors") << endmsg; 00200 return status; 00201 }
| 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 210 of file PoolDbCnvSvc.cpp.
00211 { 00212 IConverter* pConverter; 00213 ConverterID cnvid(POOL_StorageType, wanted); 00214 pConverter = PluginService::CreateWithId<IConverter*>(cnvid, typ, wanted, serviceLocator()); 00215 if ( 0 == pConverter ) { 00216 const CLID gen_clids[] = { 00217 /* ObjectList */ CLID_Any + CLID_ObjectList, 00218 /* ObjectVector */ CLID_Any + CLID_ObjectVector, 00219 /* Keyed Map */ CLID_Any + CLID_ObjectVector+0x00030000, 00220 /* Keyed Hashmap */ CLID_Any + CLID_ObjectVector+0x00040000, 00221 /* Keyed redirection array */ CLID_Any + CLID_ObjectVector+0x00050000, 00222 /* Standard, non-container */ CLID_Any 00223 }; 00224 for ( unsigned int i = 0; i < sizeof(gen_clids)/sizeof(gen_clids[0]); i++ ) { 00225 if ( (wanted>>16) == (gen_clids[i]>>16) ) { 00226 ConverterID cnvid(POOL_StorageType, gen_clids[i]); 00227 pConverter = PluginService::CreateWithId<IConverter*>(cnvid, typ, wanted, serviceLocator()); 00228 if ( 0 != pConverter ) { 00229 return pConverter; 00230 } 00231 } 00232 } 00233 // Check if a converter using object update is needed 00234 if ( (wanted>>24) != 0 ) { 00235 ConverterID cnvid(POOL_StorageType, CLID_Any | 1<<31); 00236 pConverter = PluginService::CreateWithId<IConverter*>(cnvid, typ, wanted, serviceLocator()); 00237 if ( 0 != pConverter ) { 00238 return pConverter; 00239 } 00240 } 00241 // If we do not have found any suitable container after searching 00242 // for standard containers, we will use the "ANY" converter 00243 // ... and pray for everything will go well. 00244 ConverterID cnvid(POOL_StorageType, CLID_Any); 00245 pConverter = PluginService::CreateWithId<IConverter*>(cnvid, typ, wanted, serviceLocator()); 00246 if ( 0 != pConverter ) { 00247 MsgStream log(msgSvc(), name()); 00248 log << MSG::INFO << "Using \"Any\" converter " 00249 << "for objects of type " 00250 << std::showbase << std::hex << wanted << endmsg; 00251 } 00252 } 00253 return pConverter; 00254 }
| void PoolDbCnvSvc::loadConverter | ( | DataObject * | pObject | ) | [virtual] |
ConversionSvc overload: Load the class (dictionary) for the converter.
Reimplemented from ConversionSvc.
Definition at line 256 of file PoolDbCnvSvc.cpp.
00256 { 00257 if (pObject) { 00258 MsgStream log(msgSvc(), name()); 00259 std::string cname = System::typeinfoName(typeid(*pObject)); 00260 log << MSG::DEBUG << "Trying to 'Autoload' dictionary for class " << cname << endmsg; 00261 gInterpreter->EnableAutoLoading(); 00262 gInterpreter->AutoLoad(cname.c_str()); 00263 } 00264 }
| virtual IPoolCacheSvc* PoolDbCnvSvc::cacheSvc | ( | ) | const [inline, virtual] |
Access to cache service.
Implements IPoolDbMgr.
Definition at line 163 of file PoolDbCnvSvc.h.
00163 { 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 containig output file | |
| openMode | String containig 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 containig 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 containig output file |
Reimplemented from ConversionSvc.
| virtual StatusCode PoolDbCnvSvc::commitOutput | ( | const std::string & | outputFile, | |
| bool | do_commit | |||
| ) | [virtual] |
Commit pending output.
| outputFile | String containig 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 infotmation 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 523 of file PoolDbCnvSvc.cpp.
00528 { 00529 PoolDbAddress* pA = 0; 00530 pool::Guid guid = pool::Guid::null(); 00531 std::auto_ptr<pool::Token> tok(new pool::Token()); 00532 guid.Data1 = clid; 00533 tok->setDb(par[0]); 00534 tok->setCont(par[1]); 00535 tok->setTechnology(typ); 00536 tok->setClassID(guid); 00537 tok->oid().first = ip[0]; 00538 tok->oid().second = ip[1]; 00539 if ( createAddress(tok.get(), &pA).isSuccess() ) { 00540 refpAddress = pA; 00541 tok->release(); 00542 tok.release(); 00543 return S_OK; 00544 } 00545 return error("createAddress> Failed to create opaque address."); 00546 }
| 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 549 of file PoolDbCnvSvc.cpp.
00549 { 00550 if ( pTok ) { 00551 *ppAdd = new PoolDbAddress(pTok); 00552 return S_OK; 00553 } 00554 return error("createAddress> Failed to create opaque address from POOL token."); 00555 }
| 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 604 of file PoolDbCnvSvc.cpp.
00604 { 00605 if ( pA && call ) { 00606 pool::Token* tok = pA->token(); 00607 DbContainer cntH(POOL_StorageType); 00608 const DbTypeInfo* info = (const DbTypeInfo*)call->shape(); 00609 StatusCode sc = connectContainer(FID,tok->dbID(),tok->contID(),pool::UPDATE,info,cntH); 00610 if ( sc.isSuccess() ) { 00611 call->setHandler(&m_handler); 00612 if ( cntH.update(call, tok->oid()).isSuccess() ) { 00613 return S_OK; 00614 } 00615 return error("markUpdate> Failed to update object:"+tok->toString()); 00616 } 00617 MsgStream log(messageService(), name()); 00618 log << MSG::ERROR << "markUpdate> The container " 00619 << tok->dbID() << "::" << tok->contID() 00620 << " cannot be accessed." << endmsg 00621 << "Was this object really read from the container " 00622 << "the object token claims?" 00623 << endmsg; 00624 return S_FAIL; 00625 } 00626 return error("createRep> Invalid object address for update."); 00627 }
| 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 630 of file PoolDbCnvSvc.cpp.
00630 { 00631 StatusCode sc = read(call, *pA->token()); 00632 if ( sc.isSuccess() || sc == BAD_DATA_CONNECTION ) { 00633 return sc; 00634 } 00635 std::string err="read> Cannot read object:"+pA->registry()->identifier()+" "; 00636 return error(err, false); 00637 }
| 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 640 of file PoolDbCnvSvc.cpp.
00640 { 00641 try { 00642 DbContainer cntH(tok.technology()); 00643 const DbTypeInfo* info = (const DbTypeInfo*)call->shape(); 00644 StatusCode sc = connectContainer(FID,tok.dbID(),tok.contID(),pool::READ,info,cntH); 00645 if ( sc.isSuccess() ) { 00646 typedef pool::DbObjectHandle<pool::DbObject> ObjH; 00647 call->setHandler(&m_handler); 00648 return ObjH::openEx(cntH, tok, call, pool::READ).isSuccess() ? S_OK : S_FAIL; 00649 } 00650 else if ( sc == BAD_DATA_CONNECTION ) { 00651 return sc; 00652 } 00653 } 00654 catch (std::exception& e) { 00655 std::string err="read> Cannot read object:"+tok.toString()+" "; 00656 return error(err+e.what(), false); 00657 } 00658 catch (...) { 00659 std::string err = "read> Cannot read object:"+tok.toString(); 00660 return error(err+" [Unknown fatal exception]", false); 00661 } 00662 return error("read> Cannot read object:"+tok.toString(), false); 00663 }
std::string PoolDbCnvSvc::m_cacheSvcName [protected] |
Name of the POOL cache service instance to connect to.
Definition at line 67 of file PoolDbCnvSvc.h.
std::string PoolDbCnvSvc::m_implementation [protected] |
std::string PoolDbCnvSvc::m_serverConnect [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 103 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] |