ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Attributes | List of all members
pool::DbStorageSvc Class Reference

#include <POOLCore/DbStorageSvc.h>

Inheritance diagram for pool::DbStorageSvc:
Collaboration diagram for pool::DbStorageSvc:

Public Types

enum  : unsigned {
  ISTORAGESVC_ERROR = DbStatus::Error, INVALID_SESSION_TOKEN = ISTORAGESVC_ERROR+2, INVALID_CONNECTION_TOKEN = ISTORAGESVC_ERROR+4, INVALID_TRANSACTION_TOKEN = ISTORAGESVC_ERROR+6,
  INVALID_AUTHENTICATION = ISTORAGESVC_ERROR+8, TRANSACTION_FAILED = ISTORAGESVC_ERROR+10, INVALID_OBJECT = ISTORAGESVC_ERROR+12, INVALID_OBJ_TOKEN = ISTORAGESVC_ERROR+14,
  OBJ_NOT_LOADED = ISTORAGESVC_ERROR+16, CONNECTION_NOT_EXISTING = ISTORAGESVC_ERROR+18, ISTORAGESVC_LAST = ISTORAGESVC_ERROR+20, ISTORAGESVC_INFO = DbStatus::Info,
  SHAPE_NOT_AVAILIBLE = ISTORAGESVC_INFO+2, IS_PERSISTENT_SHAPE = ISTORAGESVC_INFO+4
}
 DbStatus code definitions. More...
 

Public Member Functions

 DbStorageSvc ()
 Standard Constructor: Constructs an object of type DbStorageSvc. More...
 
 DbStorageSvc (const std::string &name)
 Initializing Constructor: Constructs an object of type DbStorageSvc. More...
 
virtual ~DbStorageSvc ()
 Standard destructor. More...
 
 DbStorageSvc (const DbStorageSvc &)=delete
 
DbStorageSvcoperator= (const DbStorageSvc &)=delete
 
DbSessionsessionHdl ()
 Database session handle. More...
 
DbDomaindomainHdl ()
 Database domain handle. More...
 
virtual DbStatus queryInterface (const Guid &riid, void **ppvUnknown)
 IInterface implementation: Query interfaces of Interface. More...
 
virtual unsigned int addRef ()
 IInterface implementation: Reference Interface instance
More...
 
virtual unsigned int release ()
 IInterface implementation: Release Interface instance
More...
 
IService interface


virtual DbStatus initialize ()
 IService implementation override: Initilize Service. More...
 
virtual DbStatus finalize ()
 IService implementation override: Finalize Service
More...
 
virtual const std::string & name () const
 IService implementation: Retrieve name of the service
More...
 
IStorageExplorer interface


virtual DbStatus allocate (FileDescriptor &refDB, const std::string &refCont, int technology, const void *object, ShapeH shapeH, Token *&refpTok)
 Register object for write. More...
 
virtual DbStatus update (FileDescriptor &refDB, const void *object, ShapeH shapeH, Token &refToken)
 In place update of an existing object. More...
 
virtual DbStatus destroy (FileDescriptor &refDB, Token &refToken)
 Destroy an existing persistent object. More...
 
virtual DbStatus read (const FileDescriptor &refDB, const Token &persToken, ShapeH shapeH, void **object)
 Read a persistent object from the medium. More...
 
virtual std::string getContName (FileDescriptor &refDB, Token &persToken)
 Get container name for object. More...
 
virtual DbStatus getShape (FileDescriptor &refDB, const Guid &objType, ShapeH &shapeH)
 Retrieve persistent shape from Storage manager. More...
 
virtual DbStatus createShape (const FileDescriptor &refDB, const std::string &cntName, const Guid &shapeID, ShapeH &shapeH)
 Create a persistent shape a given Database container location. More...
 
virtual DbStatus startSession (int mode, int tech, SessionH &session)
 Start a new Database Session. More...
 
virtual DbStatus endSession (const SessionH session)
 End the Database session. More...
 
virtual DbStatus existsConnection (const SessionH sessionH, int mode, const FileDescriptor &refDB)
 Check the existence of a logical Database unit. More...
 
virtual DbStatus connect (const SessionH sessionH, int mode, FileDescriptor &refDB)
 Connect to a logical Database unit. More...
 
virtual DbStatus reconnect (FileDescriptor &refDB, int mode)
 Reconnect to a logical Database unit with different access mode. More...
 
virtual DbStatus disconnect (FileDescriptor &refDB)
 Disconnect from a logical Database unit. More...
 
virtual DbStatus openMode (FileDescriptor &refDB, int &mode)
 Query the access mode of a Database unit. More...
 
virtual DbStatus endTransaction (ConnectionH conn, Transaction::Action typ)
 End/Finish an existing Transaction sequence. More...
 
virtual DbStatus getDomainOption (const SessionH sessionH, DbOption &opt)
 Access options for a given database domain. More...
 
virtual DbStatus setDomainOption (const SessionH sessionH, const DbOption &opt)
 Set options for a given database domain. More...
 

Static Public Member Functions

static const char * catalogLabel ()
 Label of the specific class. More...
 
static const GuidinterfaceID ()
 Retrieve interface ID. More...
 
static const char * category ()
 Retrieve category name. More...
 

Private Types

typedef std::vector< const Token * > TokenVec
 

Private Attributes

std::string m_name
 Service Name
More...
 
unsigned int m_refCount
 Reference counter
More...
 
DbSession m_sesH
 Database session handle. More...
 
DbDomain m_domH
 Database domain handle. More...
 
int m_ageLimit
 Property: AgeLimit indicating the maximal allowed age of files. More...
 
DbType m_type
 Technology type. More...
 
DbStorageExplorerm_explorer
 Reference to storage explorer object. More...
 

Detailed Description

The DbStorageSvc class is able to handle user request for

This functionality is defined in the IDbStorageSvc interface and implemented in the DbStorageSvc class. Please refer to the header file POOLCore/IDbStorageSvc for further details.

Author
Markus Frank
Version
1.0

Definition at line 41 of file DbStorageSvc.h.

Member Typedef Documentation

◆ TokenVec

typedef std::vector<const Token*> pool::DbStorageSvc::TokenVec
private

Definition at line 43 of file DbStorageSvc.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : unsigned
inherited

DbStatus code definitions.

Enumerator
ISTORAGESVC_ERROR 

Error tag.

INVALID_SESSION_TOKEN 

Invalid Database session token.

INVALID_CONNECTION_TOKEN 

Invalid Database connection token.

INVALID_TRANSACTION_TOKEN 

Invalid Database Transaction token.

INVALID_AUTHENTICATION 

Invalid Database authentication.

TRANSACTION_FAILED 

The Transaction failed.

INVALID_OBJECT 

Object pointer is invalid.

INVALID_OBJ_TOKEN 

Invalid object address.

OBJ_NOT_LOADED 

Sorry, the requested object is not loaded.

CONNECTION_NOT_EXISTING 

Database does not exist.

ISTORAGESVC_LAST 

Terminator.

ISTORAGESVC_INFO 

Info tag.

SHAPE_NOT_AVAILIBLE 

Requested shape is unfortunately not availible.

IS_PERSISTENT_SHAPE 

Requested shape the persistent shape.

Definition at line 313 of file IStorageSvc.h.

Constructor & Destructor Documentation

◆ DbStorageSvc() [1/3]

pool::DbStorageSvc::DbStorageSvc ( )

Standard Constructor: Constructs an object of type DbStorageSvc.

◆ DbStorageSvc() [2/3]

pool::DbStorageSvc::DbStorageSvc ( const std::string &  name)

Initializing Constructor: Constructs an object of type DbStorageSvc.

◆ ~DbStorageSvc()

virtual pool::DbStorageSvc::~DbStorageSvc ( )
virtual

Standard destructor.

◆ DbStorageSvc() [3/3]

pool::DbStorageSvc::DbStorageSvc ( const DbStorageSvc )
delete

Member Function Documentation

◆ addRef()

virtual unsigned int pool::DbStorageSvc::addRef ( )
virtual

IInterface implementation: Reference Interface instance

Implements pool::IStorageSvc.

◆ allocate()

virtual DbStatus pool::DbStorageSvc::allocate ( FileDescriptor refDB,
const std::string &  refCont,
int  technology,
const void *  object,
ShapeH  shapeH,
Token *&  refpTok 
)
virtual

Register object for write.

Parameters
refDB[IN] Reference to Database descriptor
refCont[IN] Reference to container name
technology[IN]Specialised sub-technology
object[IN] Pointer to persistent data object.
shapeH[IN] Handle to persistent type information
refpTok[OUT] Reference to location for storing the pointer of the persistent object token.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ catalogLabel()

static const char* pool::DbStorageSvc::catalogLabel ( )
inlinestatic

Label of the specific class.

Definition at line 74 of file DbStorageSvc.h.

74 { return "pool_DbStorageSvc"; }

◆ category()

static const char* pool::IStorageSvc::category ( )
inlinestaticinherited

Retrieve category name.

Definition at line 66 of file IStorageSvc.h.

66 { return "pool_IStorageSvc"; }

◆ connect()

virtual DbStatus pool::DbStorageSvc::connect ( const SessionH  sessionH,
int  mode,
FileDescriptor refDB 
)
virtual

Connect to a logical Database unit.

A connection is equivalent to the triple (OCISession, OCIServer, OCISvcCtx) in ORACLE, a login to a datasource using ODBC, or a single federation for Objectivity. For file based technologies, such as root, MS Access, ODBC/Text etc., this is involves the opening of the requested file.

Parameters
sessionH[IN] Session context to be used to open the Database.
mode[IN] Flag to indicate the accessmode of the session. READ, NEW/CREATE/WRITE, UPDATE, RECREATE.
refDB[I/O] Descriptor of the Database to be opened. On successful return the Database handle is valid.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ createShape()

virtual DbStatus pool::DbStorageSvc::createShape ( const FileDescriptor refDB,
const std::string &  cntName,
const Guid shapeID,
ShapeH shapeH 
)
virtual

Create a persistent shape a given Database container location.

This request involves Database actions. On creation of a shape the corresponding Database container is created.

Parameters
refDB[IN] Reference to Database descriptor
cntName[IN] Shape/Container name.
shapeID[IN] Shape identifier.
shapeH[OUT] Handle to persistent mapping of a given object type.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ destroy()

virtual DbStatus pool::DbStorageSvc::destroy ( FileDescriptor refDB,
Token refToken 
)
virtual

Destroy an existing persistent object.

Parameters
refDB[IN] Reference to Database descriptor
refToken[IN] Reference to token containing the location information of the persistent object.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ disconnect()

virtual DbStatus pool::DbStorageSvc::disconnect ( FileDescriptor refDB)
virtual

Disconnect from a logical Database unit.

The request for disconnect requires, that all pending Transactions are already commited. Otherwise data are lost. On disconnection the access to the Database is finalized, closed. The token will be invalidated may not be used at any longer after disconnection.

Parameters
refDB[IN] Descriptor of the Database access. This handle was retrieved when connecting to the logical Database. On successful return the Database handle will be invalidated.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ domainHdl()

DbDomain& pool::DbStorageSvc::domainHdl ( )
inline

Database domain handle.

Definition at line 79 of file DbStorageSvc.h.

79 { return m_domH; }

◆ endSession()

virtual DbStatus pool::DbStorageSvc::endSession ( const SessionH  session)
virtual

End the Database session.

The request to end a Database session requires, that all pending Transactions and connections are closed. Otherwise internally the close will be forced and potentially data on pending Transactions will be lost. The token will be invalidated may not be used at any longer once the session ended.

Parameters
session[IN] Handle to the Database session. This handle was retrieved when starting the session.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ endTransaction()

virtual DbStatus pool::DbStorageSvc::endTransaction ( ConnectionH  conn,
Transaction::Action  typ 
)
virtual

End/Finish an existing Transaction sequence.

At this phase all objects, which were marked for write when the Transaction was started, are either going to be made persistent or scratched. After the Transaction ended, the Transaction context is invalidated and may no longer be used independent wether the Transaction was successful or not.

Parameters
conn[IN] DB connection
typ[IN] Enum indicating an action to be performed. Valid arguments are COMMIT and ROLLBACK. ROLLBACK can only be suported if the underlying technology supports the necessary features.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ existsConnection()

virtual DbStatus pool::DbStorageSvc::existsConnection ( const SessionH  sessionH,
int  mode,
const FileDescriptor refDB 
)
virtual

Check the existence of a logical Database unit.

Parameters
sessionH[IN] Session context to be used to open the Database.
mode[IN] Flag to indicate the accessmode of the session. READ, NEW/CREATE/WRITE, UPDATE, RECREATE.
refDB[I/O] Descriptor of the Database to be opened. On successful return the Database handle is valid.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ finalize()

virtual DbStatus pool::DbStorageSvc::finalize ( )
virtual

IService implementation override: Finalize Service

◆ getContName()

virtual std::string pool::DbStorageSvc::getContName ( FileDescriptor refDB,
Token persToken 
)
virtual

Get container name for object.

Parameters
refDB[IN] Reference to Database descriptor
pToken[IN] Token to the persistent object.
Returns
std::string container name.

Implements pool::IStorageSvc.

◆ getDomainOption()

virtual DbStatus pool::DbStorageSvc::getDomainOption ( const SessionH  sessionH,
DbOption opt 
)
virtual

Access options for a given database domain.

Domain options are global options, which refer to the database technology and not to a particular connection.

Note: The options depend on the underlying implementation and are not normalized.

Parameters
sessionH[IN] Session context to be used to open the Database.
opt[IN] Reference to option object.
Returns
DbStatus code indicating success or failure.

◆ getShape()

virtual DbStatus pool::DbStorageSvc::getShape ( FileDescriptor refDB,
const Guid objType,
ShapeH shapeH 
)
virtual

Retrieve persistent shape from Storage manager.

The persistent shape is saved at write time to a Database. To match the transient shape of an object to the persistent shape of the data at the time the data were written should allow for schema evolution and object transformation(s).

Parameters
refDB[IN] Reference to Database descriptor
objType[IN] Shape identifier.
shapeH[OUT] Handle to persistent mapping of a given object type.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ initialize()

virtual DbStatus pool::DbStorageSvc::initialize ( )
virtual

IService implementation override: Initilize Service.

◆ interfaceID()

static const Guid& pool::IStorageSvc::interfaceID ( )
staticinherited

Retrieve interface ID.

◆ name()

virtual const std::string& pool::DbStorageSvc::name ( ) const
inlinevirtual

IService implementation: Retrieve name of the service

Definition at line 99 of file DbStorageSvc.h.

99 { return m_name; }

◆ openMode()

virtual DbStatus pool::DbStorageSvc::openMode ( FileDescriptor refDB,
int &  mode 
)
virtual

Query the access mode of a Database unit.

In order to reconnect, the database obviously must already be open.

Parameters
refDB[IN] Descriptor of the Database to be queried.
mode[OUT] Open mod to the database.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ operator=()

DbStorageSvc& pool::DbStorageSvc::operator= ( const DbStorageSvc )
delete

◆ queryInterface()

virtual DbStatus pool::DbStorageSvc::queryInterface ( const Guid riid,
void **  ppvUnknown 
)
virtual

IInterface implementation: Query interfaces of Interface.

Implements pool::IStorageSvc.

◆ read()

virtual DbStatus pool::DbStorageSvc::read ( const FileDescriptor refDB,
const Token persToken,
ShapeH  shapeH,
void **  object 
)
virtual

Read a persistent object from the medium.

Reading an object does not create the object.

Parameters
refDB[IN] Reference to Database descriptor
persToken[IN] Reference to persistent token information.
object[OUT] Pointer to persistent data pointer.
shapeH[IN] Desired object shape to be read
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ reconnect()

virtual DbStatus pool::DbStorageSvc::reconnect ( FileDescriptor refDB,
int  mode 
)
virtual

Reconnect to a logical Database unit with different access mode.

In order to reconnect, the database obviously must already be open.

Parameters
refDB[IN] Descriptor of the Database to be re-opened.
mode[IN] Flag to indicate the accessmode of the session. Since a database can only be re-opened if it exists, possible values may only be: READ, UPDATE.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ release()

virtual unsigned int pool::DbStorageSvc::release ( )
virtual

IInterface implementation: Release Interface instance

Implements pool::IStorageSvc.

◆ sessionHdl()

DbSession& pool::DbStorageSvc::sessionHdl ( )
inline

Database session handle.

Definition at line 77 of file DbStorageSvc.h.

77 { return m_sesH; }

◆ setDomainOption()

virtual DbStatus pool::DbStorageSvc::setDomainOption ( const SessionH  sessionH,
const DbOption opt 
)
virtual

Set options for a given database domain.

Domain options are global options, which refer to the database technology and not to a particular connection.

Note: The options depend on the underlying implementation and are not normalized.

Parameters
sessionH[IN] Session context to be used to open the Database.
opt[IN] Reference to option object.
Returns
DbStatus code indicating success or failure.

◆ startSession()

virtual DbStatus pool::DbStorageSvc::startSession ( int  mode,
int  tech,
SessionH session 
)
virtual

Start a new Database Session.

The Database session handles Databases of one given type. This involves specific handling of a given domain represented by a technology type. All subsequent actions involving Database actions will re-use this technology identifier. The session is a purely logical concept, which typically cannot fail unless the underlying technology requires global initialization calls.

Parameters
mode[IN] Flag to indicate the accessmode of the session. READ, NEW/CREATE/WRITE, UPDATE, RECREATE
tech[IN] Flag indicating the technology type of the Database the user wants to connect to.
session[OUT] Token or handle to the Database session. This handle may later be used to open a new Database connection.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

◆ update()

virtual DbStatus pool::DbStorageSvc::update ( FileDescriptor refDB,
const void *  object,
ShapeH  shapeH,
Token refToken 
)
virtual

In place update of an existing object.

Parameters
refDB[IN] Reference to Database descriptor
object[IN] Pointer to persistent data object.
shapeH[IN] Handle to persistent type information
refToken[IN] Reference to token containing the location information of the persistent object.
Returns
DbStatus code indicating success or failure.

Implements pool::IStorageSvc.

Member Data Documentation

◆ m_ageLimit

int pool::DbStorageSvc::m_ageLimit
private

Property: AgeLimit indicating the maximal allowed age of files.

Definition at line 54 of file DbStorageSvc.h.

◆ m_domH

DbDomain pool::DbStorageSvc::m_domH
private

Database domain handle.

Definition at line 52 of file DbStorageSvc.h.

◆ m_explorer

DbStorageExplorer* pool::DbStorageSvc::m_explorer
private

Reference to storage explorer object.

Definition at line 58 of file DbStorageSvc.h.

◆ m_name

std::string pool::DbStorageSvc::m_name
private

Service Name

Definition at line 46 of file DbStorageSvc.h.

◆ m_refCount

unsigned int pool::DbStorageSvc::m_refCount
private

Reference counter

Definition at line 48 of file DbStorageSvc.h.

◆ m_sesH

DbSession pool::DbStorageSvc::m_sesH
private

Database session handle.

Definition at line 50 of file DbStorageSvc.h.

◆ m_type

DbType pool::DbStorageSvc::m_type
private

Technology type.

Definition at line 56 of file DbStorageSvc.h.


The documentation for this class was generated from the following file:
pool::IStorageSvc::ISTORAGESVC_INFO
@ ISTORAGESVC_INFO
Info tag.
Definition: IStorageSvc.h:337
pool::IStorageSvc::SHAPE_NOT_AVAILIBLE
@ SHAPE_NOT_AVAILIBLE
Requested shape is unfortunately not availible.
Definition: IStorageSvc.h:339
pool::IStorageSvc::INVALID_AUTHENTICATION
@ INVALID_AUTHENTICATION
Invalid Database authentication.
Definition: IStorageSvc.h:323
pool::DbStatus::Info
@ Info
Definition: DbStatus.h:74
pool::IStorageSvc::OBJ_NOT_LOADED
@ OBJ_NOT_LOADED
Sorry, the requested object is not loaded.
Definition: IStorageSvc.h:331
pool::DbStorageSvc::m_domH
DbDomain m_domH
Database domain handle.
Definition: DbStorageSvc.h:52
pool::IStorageSvc::INVALID_SESSION_TOKEN
@ INVALID_SESSION_TOKEN
Invalid Database session token.
Definition: IStorageSvc.h:317
pool::IStorageSvc::IS_PERSISTENT_SHAPE
@ IS_PERSISTENT_SHAPE
Requested shape the persistent shape.
Definition: IStorageSvc.h:341
pool::IStorageSvc::INVALID_OBJ_TOKEN
@ INVALID_OBJ_TOKEN
Invalid object address.
Definition: IStorageSvc.h:329
pool::IStorageSvc::INVALID_OBJECT
@ INVALID_OBJECT
Object pointer is invalid.
Definition: IStorageSvc.h:327
pool::IStorageSvc::INVALID_CONNECTION_TOKEN
@ INVALID_CONNECTION_TOKEN
Invalid Database connection token.
Definition: IStorageSvc.h:319
pool::IStorageSvc::TRANSACTION_FAILED
@ TRANSACTION_FAILED
The Transaction failed.
Definition: IStorageSvc.h:325
pool::IStorageSvc::INVALID_TRANSACTION_TOKEN
@ INVALID_TRANSACTION_TOKEN
Invalid Database Transaction token.
Definition: IStorageSvc.h:321
pool::DbStorageSvc::m_name
std::string m_name
Service Name
Definition: DbStorageSvc.h:46
pool::IStorageSvc::CONNECTION_NOT_EXISTING
@ CONNECTION_NOT_EXISTING
Database does not exist.
Definition: IStorageSvc.h:333
pool::IStorageSvc::ISTORAGESVC_LAST
@ ISTORAGESVC_LAST
Terminator.
Definition: IStorageSvc.h:335
pool::DbStatus::Error
@ Error
Definition: DbStatus.h:76
pool::DbStorageSvc::m_sesH
DbSession m_sesH
Database session handle.
Definition: DbStorageSvc.h:50
pool::IStorageSvc::ISTORAGESVC_ERROR
@ ISTORAGESVC_ERROR
Error tag.
Definition: IStorageSvc.h:315