ATLAS Offline Software
Loading...
Searching...
No Matches
pool::DbStorageSvc Class Reference

The DbStorageSvc class is able to handle user request for. More...

#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.
 DbStorageSvc (const std::string &name)
 Initializing Constructor: Constructs an object of type DbStorageSvc.
virtual ~DbStorageSvc ()
 Standard destructor.
 DbStorageSvc (const DbStorageSvc &)=delete
DbStorageSvcoperator= (const DbStorageSvc &)=delete
DbSessionsessionHdl ()
 Database session handle.
DbDomaindomainHdl ()
 Database domain handle.
virtual DbStatus queryInterface (const Guid &riid, void **ppvUnknown)
 IInterface implementation: Query interfaces of Interface.
virtual unsigned int addRef ()
 IInterface implementation: Reference Interface instance.
virtual unsigned int release ()
 IInterface implementation: Release Interface instance.
bool msgLvl (const MSG::Level lvl) const
 Test the output level.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.
void setLevel (MSG::Level lvl)
 Change the current logging level.
IService interface
virtual DbStatus initialize ()
 IService implementation override: Initilize Service.
virtual DbStatus finalize ()
 IService implementation override: Finalize Service.
virtual const std::string & name () const
 IService implementation: Retrieve name of the service.
IStorageExplorer interface
virtual DbStatus allocate (FileDescriptor &refDB, const std::string &refCont, int technology, const void *object, ShapeH shapeH, Token *&refpTok)
 Register object for write.
virtual DbStatus read (const FileDescriptor &refDB, const Token &persToken, ShapeH shapeH, void **object)
 Read a persistent object from the medium.
virtual std::string getContName (FileDescriptor &refDB, Token &persToken)
 Get container name for object.
virtual DbStatus getShape (FileDescriptor &refDB, const Guid &objType, ShapeH &shapeH)
 Retrieve persistent shape from Storage manager.
virtual DbStatus createShape (const FileDescriptor &refDB, const std::string &cntName, const Guid &shapeID, ShapeH &shapeH)
 Create a persistent shape a given Database container location.
virtual DbStatus startSession (int mode, int tech, SessionH &session)
 Start a new Database Session.
virtual DbStatus endSession (const SessionH session)
 End the Database session.
virtual DbStatus existsConnection (const SessionH sessionH, int mode, const FileDescriptor &refDB)
 Check the existence of a logical Database unit.
virtual DbStatus connect (const SessionH sessionH, int mode, FileDescriptor &refDB)
 Connect to a logical Database unit.
virtual DbStatus disconnect (FileDescriptor &refDB)
 Disconnect from a logical Database unit.
virtual DbStatus openMode (FileDescriptor &refDB, int &mode)
 Query the access mode of a Database unit.
virtual DbStatus endTransaction (ConnectionH conn, Transaction::Action typ)
 End/Finish an existing Transaction sequence.
virtual DbStatus getDomainOption (const SessionH sessionH, DbOption &opt)
 Access options for a given database domain.
virtual DbStatus setDomainOption (const SessionH sessionH, const DbOption &opt)
 Set options for a given database domain.

Static Public Member Functions

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

Private Types

typedef std::vector< const Token * > TokenVec

Private Member Functions

void initMessaging () const
 Initialize our message level and MessageSvc.

Private Attributes

std::string m_name
 Service Name.
unsigned int m_refCount
 Reference counter.
DbSession m_sesH
 Database session handle.
DbDomain m_domH
 Database domain handle.
int m_ageLimit
 Property: AgeLimit indicating the maximal allowed age of files.
DbType m_type
 Technology type.
DbStorageExplorerm_explorer
 Reference to storage explorer object.
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels)
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging)

Detailed Description

The DbStorageSvc class is able to handle user request for.

  • transient objects to become persistent and
  • persistent objects to be made transient. What the storage manager however needs to perform this task are object mappings, which translate between the two representations.

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 39 of file DbStorageSvc.h.

Member Typedef Documentation

◆ TokenVec

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

Definition at line 41 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 272 of file IStorageSvc.h.

272 : unsigned {
301 };
@ SHAPE_NOT_AVAILIBLE
Requested shape is unfortunately not availible.
@ INVALID_CONNECTION_TOKEN
Invalid Database connection token.
@ INVALID_OBJECT
Object pointer is invalid.
@ ISTORAGESVC_INFO
Info tag.
@ ISTORAGESVC_ERROR
Error tag.
@ IS_PERSISTENT_SHAPE
Requested shape the persistent shape.
@ INVALID_SESSION_TOKEN
Invalid Database session token.
@ INVALID_AUTHENTICATION
Invalid Database authentication.
@ ISTORAGESVC_LAST
Terminator.
@ INVALID_OBJ_TOKEN
Invalid object address.
@ INVALID_TRANSACTION_TOKEN
Invalid Database Transaction token.
@ CONNECTION_NOT_EXISTING
Database does not exist.
@ TRANSACTION_FAILED
The Transaction failed.
@ OBJ_NOT_LOADED
Sorry, the requested object is not loaded.

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

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

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

Label of the specific class.

Definition at line 72 of file DbStorageSvc.h.

72{ return "pool_DbStorageSvc"; }

◆ category()

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.

◆ 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 77 of file DbStorageSvc.h.

77{ return m_domH; }
DbDomain m_domH
Database domain handle.

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

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40{
42 // If user did not set an explicit level, set a default
43 if (m_lvl == MSG::NIL) {
44 m_lvl = m_imsg ?
45 static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
46 MSG::INFO;
47 }
48}
std::string m_nm
Message source name.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::atomic< MSG::Level > m_lvl
Current logging level.
IMessageSvc * getMessageSvc(bool quiet=false)

◆ interfaceID()

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

Retrieve interface ID.

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 163 of file AthMessaging.h.

164{
165 MsgStream* ms = m_msg_tls.get();
166 if (!ms) {
167 if (!m_initialized.test_and_set()) initMessaging();
168 ms = new MsgStream(m_imsg,m_nm);
169 m_msg_tls.reset( ms );
170 }
171
172 ms->setLevel (m_lvl);
173 return *ms;
174}
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
void initMessaging() const
Initialize our message level and MessageSvc.

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 178 of file AthMessaging.h.

179{ return msg() << lvl; }
MsgStream & msg() const
The standard message stream.

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152{
153 if (m_lvl <= lvl) {
154 msg() << lvl;
155 return true;
156 } else {
157 return false;
158 }
159}

◆ name()

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

IService implementation: Retrieve name of the service.

Definition at line 97 of file DbStorageSvc.h.

97{ return m_name; }
std::string m_name
Service Name.

◆ openMode()

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

Query the access mode of a Database unit.

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.

◆ 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 75 of file DbStorageSvc.h.

75{ return m_sesH; }
DbSession m_sesH
Database session handle.

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

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29{
30 m_lvl = lvl;
31}

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

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_ageLimit

int pool::DbStorageSvc::m_ageLimit
private

Property: AgeLimit indicating the maximal allowed age of files.

Definition at line 52 of file DbStorageSvc.h.

◆ m_domH

DbDomain pool::DbStorageSvc::m_domH
private

Database domain handle.

Definition at line 50 of file DbStorageSvc.h.

◆ m_explorer

DbStorageExplorer* pool::DbStorageSvc::m_explorer
private

Reference to storage explorer object.

Definition at line 56 of file DbStorageSvc.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_name

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

Service Name.

Definition at line 44 of file DbStorageSvc.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_refCount

unsigned int pool::DbStorageSvc::m_refCount
private

Reference counter.

Definition at line 46 of file DbStorageSvc.h.

◆ m_sesH

DbSession pool::DbStorageSvc::m_sesH
private

Database session handle.

Definition at line 48 of file DbStorageSvc.h.

◆ m_type

DbType pool::DbStorageSvc::m_type
private

Technology type.

Definition at line 54 of file DbStorageSvc.h.


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