Gaudi Framework, version v21r8

Home   Generated: 17 Mar 2010

PoolDbCnvSvc Class Reference

Description:. More...

#include <PoolDb/PoolDbCnvSvc.h>

Inheritance diagram for PoolDbCnvSvc:

Inheritance graph
[legend]
Collaboration diagram for PoolDbCnvSvc:

Collaboration graph
[legend]

List of all members.

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 IConvertercreateConverter (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 IPoolCacheSvccacheSvc () 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::DbSelectcreateSelect (const std::string &criteria, const std::string &dbName, const std::string &cntName)
 Request an iterator over a container from the service.
virtual pool::DbSelectcreateSelect (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::stringm_domainOpts
 Buffer for domain options.
std::vector< std::stringm_databaseOpts
 Buffer for database options.
std::vector< std::stringm_containerOpts
 Buffer for container options.
IDataManagerSvcm_dataMgr
 Services needed for proper operation: Data Manager.
IPoolCacheSvcm_cacheSvc
 Reference to POOL cache service.
PoolDbDataConnectionm_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.
IIncidentSvcm_incidentSvc
 Reference to incident service.
bool m_incidentEnabled
 Flag to enable incidents on FILE_OPEN.

Classes

struct  DbH


Detailed Description

Description:.

PoolDbCnvSvc class implementation definition.

Author:
Markus Frank
Version:
1.0

Definition at line 46 of file PoolDbCnvSvc.h.


Member Typedef Documentation

Definition at line 60 of file PoolDbCnvSvc.h.

Definition at line 61 of file PoolDbCnvSvc.h.

Definition at line 62 of file PoolDbCnvSvc.h.


Constructor & Destructor Documentation

PoolDbCnvSvc::PoolDbCnvSvc ( const std::string name,
ISvcLocator svc 
)

Standard constructor.

PoolDbCnvSvc::~PoolDbCnvSvc (  )  [virtual]

Standard destructor.

Definition at line 101 of file PoolDbCnvSvc.cpp.

00101                               {
00102   s_count->decrement();
00103 }


Member Function Documentation

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 
)

Standard way to print errors.

after the printout an exception is thrown.

Parameters:
msg [IN] Message string to be printed.
rethrow [IN] Flag to indicate if an exception should be thrown
Returns:
Status code returning failure.

StatusCode PoolDbCnvSvc::setDataProvider ( IDataProviderSvc pDataSvc  )  [virtual]

Connect to data provider service.

Re-connects to data manager service.

Parameters:
pDataSvc New data provider object.
Returns:
Status code indicating success or failure.

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.

Parameters:
type_string Gaudi storage string identifier
gaudi_type Gaudi storage identifier
Returns:
Status code indicating failure or success.

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.

Parameters:
outputFile String containing output file
openMode String containing opening mode of the output file
Returns:
Status code indicating success or failure.

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.

Parameters:
outputFile String containing output file
openMode Opening mode of the output file
con Data connection reference
Returns:
Status code indicating success or failure.

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.

Parameters:
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
Returns:
Status code indicating success or failure.

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.

Parameters:
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
Returns:
Status code indicating success or failure.

Implements IPoolDbMgr.

virtual StatusCode PoolDbCnvSvc::connectOutput ( const std::string outputFile  )  [virtual]

Connect the output file to the service.

Parameters:
outputFile String containing output file
Returns:
Status code indicating success or failure.

Reimplemented from ConversionSvc.

virtual StatusCode PoolDbCnvSvc::commitOutput ( const std::string outputFile,
bool  do_commit 
) [virtual]

Commit pending output.

Parameters:
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!
Returns:
Status code indicating success or failure.

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.

Parameters:
dbName String containing name of the database
cntName String containing the name of the container object
cntH Reference to the POOL container object
Returns:
Status code indicating success or failure.

Implements IPoolDbMgr.

virtual StatusCode PoolDbCnvSvc::disconnect ( const std::string dbName  )  [virtual]

Disconnect from an existing data stream.

Parameters:
dbName String containing name of the database
Returns:
Status code indicating success or failure.

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).

Parameters:
refLink Reference to abstract link information
dbName Database name
containerName Object container name
refpAddress Opaque address information to retrieve object
Returns:
StatusCode indicating SUCCESS or failure

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.

Parameters:
pToken Reference to valid POOL token object.
ppAddress Opaque address information to retrieve object
Returns:
StatusCode indicating SUCCESS or failure

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.

Parameters:
criteria Selection criteria to restrict iteration
dbName String containing name of the database
cntName String containing the name of the container object
Returns:
Reference to the selection 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.

Parameters:
criteria Selection criteria to restrict iteration
dbH Handle to POOL database
cntName String containing the name of the container object
Returns:
Reference to the selection object

virtual StatusCode PoolDbCnvSvc::markWrite ( pool::DataCallBack call,
const std::string cntName,
PoolDbAddress **  ppAddr = 0 
) [virtual]

Marks a reference to be written.

Parameters:
call Pointer to callback object
cntName Container name the object should be written to.
refpAddr Persistent object location to be used for link setup.
Returns:
Status code indicating success or failure.

Implements IPoolDbMgr.

StatusCode PoolDbCnvSvc::markUpdate ( pool::DataCallBack call,
PoolDbAddress pAddr 
) [virtual]

Mark an object for update.

Parameters:
call Pointer to callback object
pAddr Persistent object location to be used for link setup.
Returns:
Status code indicating success or failure.

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.

Parameters:
call Pointer to callback object
pAddr Pointer to valid object address.
Returns:
Status code indicating success or failure.

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.

Parameters:
call Pointer to callback object
tok Reference to pool token describing the object
Returns:
Status code indicating success or failure.

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 }


Member Data Documentation

Name of the POOL cache service instance to connect to.

Definition at line 66 of file PoolDbCnvSvc.h.

Name of the OODataBase implementation.

Definition at line 69 of file PoolDbCnvSvc.h.

Connection string to server.

Definition at line 72 of file PoolDbCnvSvc.h.

ROOT name of optional records triggering incident.

Definition at line 75 of file PoolDbCnvSvc.h.

Flag to indicate safe transactions if requested.

Definition at line 78 of file PoolDbCnvSvc.h.

Buffer for domain options.

Definition at line 81 of file PoolDbCnvSvc.h.

Buffer for database options.

Definition at line 84 of file PoolDbCnvSvc.h.

Buffer for container options.

Definition at line 87 of file PoolDbCnvSvc.h.

Services needed for proper operation: Data Manager.

Definition at line 90 of file PoolDbCnvSvc.h.

Reference to POOL cache service.

Definition at line 93 of file PoolDbCnvSvc.h.

On writing: reference to active output stream.

Definition at line 96 of file PoolDbCnvSvc.h.

POOL Datahandler.

Definition at line 99 of file PoolDbCnvSvc.h.

POOL technology domain handle.

Definition at line 102 of file PoolDbCnvSvc.h.

Share files ? If set to YES, files will not be closed on finalize.

Definition at line 105 of file PoolDbCnvSvc.h.

Flag to enforce FID checking and verification.

Definition at line 108 of file PoolDbCnvSvc.h.

Gaudi::IFileCatalog* PoolDbCnvSvc::m_catalog [protected]

Reference to the file catalog.

Definition at line 111 of file PoolDbCnvSvc.h.

Gaudi::IIODataManager* PoolDbCnvSvc::m_ioMgr [protected]

Reference to the I/O data manager.

Definition at line 114 of file PoolDbCnvSvc.h.

Reference to incident service.

Definition at line 117 of file PoolDbCnvSvc.h.

Flag to enable incidents on FILE_OPEN.

Definition at line 120 of file PoolDbCnvSvc.h.


The documentation for this class was generated from the following files:

Generated at Wed Mar 17 18:18:52 2010 for Gaudi Framework, version v21r8 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004