Gaudi Framework, version v20r4

Generated: 8 Jan 2009

PoolDbCnvSvc Class Reference

#include <PoolDb/PoolDbCnvSvc.h>

Inheritance diagram for PoolDbCnvSvc:

Inheritance graph
[legend]
Collaboration diagram for PoolDbCnvSvc:

Collaboration graph
[legend]

List of all members.


Detailed Description

Description:.

PoolDbCnvSvc class implementation definition.

Author:
Markus Frank
Version:
1.0

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

Member Typedef Documentation

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.


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

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

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 containig output file
openMode String containig 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 containig 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 containig 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 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!
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 infotmation 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 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.

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

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

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

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.

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 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 }


Member Data Documentation

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]

Name of the OODataBase implementation.

Definition at line 70 of file PoolDbCnvSvc.h.

std::string PoolDbCnvSvc::m_serverConnect [protected]

Connection string to server.

Definition at line 73 of file PoolDbCnvSvc.h.

Flag to indicate safe transactions if requested.

Definition at line 76 of file PoolDbCnvSvc.h.

std::vector<std::string> PoolDbCnvSvc::m_domainOpts [protected]

Buffer for domain options.

Definition at line 79 of file PoolDbCnvSvc.h.

std::vector<std::string> PoolDbCnvSvc::m_databaseOpts [protected]

Buffer for database options.

Definition at line 82 of file PoolDbCnvSvc.h.

std::vector<std::string> PoolDbCnvSvc::m_containerOpts [protected]

Buffer for container options.

Definition at line 85 of file PoolDbCnvSvc.h.

Services needed for proper operation: Data Manager.

Definition at line 88 of file PoolDbCnvSvc.h.

Reference to POOL cache service.

Definition at line 91 of file PoolDbCnvSvc.h.

On writing: reference to active output stream.

Definition at line 94 of file PoolDbCnvSvc.h.

POOL Datahandler.

Definition at line 97 of file PoolDbCnvSvc.h.

POOL technology domain handle.

Definition at line 100 of file PoolDbCnvSvc.h.

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]

Flag to enforce FID checking and verification.

Definition at line 106 of file PoolDbCnvSvc.h.

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

Reference to the file catalog.

Definition at line 109 of file PoolDbCnvSvc.h.

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

Reference to the I/O data manager.

Definition at line 112 of file PoolDbCnvSvc.h.

Reference to incident service.

Definition at line 115 of file PoolDbCnvSvc.h.

Flag to enable incidents on FILE_OPEN.

Definition at line 118 of file PoolDbCnvSvc.h.


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

Generated at Thu Jan 8 17:52:08 2009 for Gaudi Framework, version v20r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004