ATLAS Offline Software
Loading...
Searching...
No Matches
pool::DbContainerImp Class Referenceabstract

"Generic" Container implementation More...

#include <StorageSvc/DbContainerImp.h>

Inheritance diagram for pool::DbContainerImp:
Collaboration diagram for pool::DbContainerImp:

Classes

struct  DbAction
 List of actions to execute at commit. More...

Public Member Functions

 DbContainerImp (const std::string &name)
virtual void release () override
 Release instance (Abstract interfaces do not expose destructor!)
virtual uint64_t size () override
 Size of the container.
virtual std::string name () const override
 Get container name.
virtual uint64_t nextRecordId () override
 Number of next record in the container (=size if no delete is allowed)
virtual void useNextRecordId (uint64_t) override
 Suggest next Record ID for tbe next object written - used only with synced indexes.
virtual DbStatus close () override
 Close the container and deallocate resources.
virtual DbStatus getOption (DbOption &opt) override
 Access options.
virtual DbStatus setOption (const DbOption &opt) override
 Set options.
virtual DbStatus transAct (Transaction::Action) override
 Execute Transaction Action.
virtual DbStatus store (const void *object, DbContainer &cntH, ShapeH shape) override
 Store object in location.
virtual DbStatus allocate (DbContainer &cntH, const void *object, ShapeH shape, Token::OID_t &oid) override
 In place allocation of object location.
virtual DbStatus next (Token::OID_t &linkH) override
 Fetch next object address to set token.
virtual DbStatus load (void **ptr, ShapeH shape, const Token::OID_t &lnkH, Token::OID_t &oid, bool any_next) override
 Find object within the container and load it into memory.
virtual DbStatus loadObject (void **ptr, ShapeH shape, Token::OID_t &oid)=0
 Find object by object identifier and load it into memory.
virtual DbStatus open (DbDatabase &dbH, const std::string &nam, const DbTypeInfo *info, DbAccessMode mode)=0
 Open the container.
virtual DbStatus checkAccess (DbDatabase &dbH, const std::string &nam) const =0
 Check if we can access the container for reading with the given type.
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.

Protected Types

typedef std::vector< DbActionActionList

Protected Member Functions

virtual ~DbContainerImp ()
 Standard destructor.
virtual DbStatus writeObject (ActionList::value_type &)
 Commit single entry to container.
virtual DbStatus commitTransaction ()
 Execute object modification requests during a transaction.

Protected Attributes

std::string m_name
 Container name.

Private Member Functions

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

Private Attributes

ActionList m_writeStack
 Transaction fifo storage for writing.
size_t m_size
 Current size of the transaction stack.
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

"Generic" Container implementation

Description: Generic helper class to implement stuff common to all existing Database containers. The base implementations can allways be overwritten.

Author
M.Frank
Version
1.0

Definition at line 44 of file DbContainerImp.h.

Member Typedef Documentation

◆ ActionList

typedef std::vector< DbAction > pool::DbContainerImp::ActionList
protected

Definition at line 63 of file DbContainerImp.h.

Constructor & Destructor Documentation

◆ ~DbContainerImp()

virtual pool::DbContainerImp::~DbContainerImp ( )
protectedvirtual

Standard destructor.

◆ DbContainerImp()

pool::DbContainerImp::DbContainerImp ( const std::string & name)
explicit

Member Function Documentation

◆ allocate()

virtual DbStatus pool::DbContainerImp::allocate ( DbContainer & cntH,
const void * object,
ShapeH shape,
Token::OID_t & oid )
overridevirtual

In place allocation of object location.

Implements pool::IDbContainer.

◆ checkAccess()

virtual DbStatus pool::IDbContainer::checkAccess ( DbDatabase & dbH,
const std::string & nam ) const
pure virtualinherited

Check if we can access the container for reading with the given type.

Implemented in pool::RootKeyContainer, pool::RootTreeContainer, and RNTupleContainer.

◆ close()

virtual DbStatus pool::DbContainerImp::close ( )
overridevirtual

Close the container and deallocate resources.

Implements pool::IDbContainer.

Reimplemented in pool::RootKeyContainer, pool::RootTreeContainer, and RNTupleContainer.

◆ commitTransaction()

virtual DbStatus pool::DbContainerImp::commitTransaction ( )
protectedvirtual

Execute object modification requests during a transaction.

◆ getOption()

virtual DbStatus pool::DbContainerImp::getOption ( DbOption & opt)
overridevirtual

Access options.

Parameters
opt[IN] Reference to option object.
Returns
DbStatus code indicating success or failure.

Implements pool::IDbContainer.

Reimplemented in pool::RootKeyContainer, pool::RootTreeContainer, and RNTupleContainer.

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

◆ load()

virtual DbStatus pool::DbContainerImp::load ( void ** ptr,
ShapeH shape,
const Token::OID_t & lnkH,
Token::OID_t & oid,
bool any_next )
overridevirtual

Find object within the container and load it into memory.

Parameters
ptr[IN/OUT] ROOT-style address of the pointer to object
shape[IN] Object type
linkH[IN] Preferred object OID
oid[OUT] Actual object OID
any_next[IN] On selection, objects may be skipped. If objects are skipped, the actual oid will differ from the preferred oid.
Returns
Status code indicating success or failure.

Implements pool::IDbContainer.

Reimplemented in pool::RootKeyContainer.

◆ loadObject()

virtual DbStatus pool::DbContainerImp::loadObject ( void ** ptr,
ShapeH shape,
Token::OID_t & oid )
pure virtual

Find object by object identifier and load it into memory.

Parameters
ptr[IN/OUT] ROOT-style address of the pointer to object
shape[IN] Object type
oid[OUT] Object OID
Returns
Status code indicating success or failure.

Implemented in pool::RootKeyContainer, pool::RootTreeContainer, pool::RootTreeIndexContainer, and RNTupleContainer.

◆ 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 std::string pool::DbContainerImp::name ( ) const
inlineoverridevirtual

Get container name.

Implements pool::IDbContainer.

Definition at line 89 of file DbContainerImp.h.

90 { return m_name; }
std::string m_name
Container name.

◆ next()

virtual DbStatus pool::DbContainerImp::next ( Token::OID_t & linkH)
overridevirtual

Fetch next object address to set token.

Implements pool::IDbContainer.

Reimplemented in pool::RootKeyContainer.

◆ nextRecordId()

virtual uint64_t pool::DbContainerImp::nextRecordId ( )
overridevirtual

Number of next record in the container (=size if no delete is allowed)

Implements pool::IDbContainer.

Reimplemented in pool::RootKeyContainer, pool::RootTreeIndexContainer, and RNTupleContainer.

◆ open()

virtual DbStatus pool::IDbContainer::open ( DbDatabase & dbH,
const std::string & nam,
const DbTypeInfo * info,
DbAccessMode mode )
pure virtualinherited

◆ release()

virtual void pool::DbContainerImp::release ( )
inlineoverridevirtual

Release instance (Abstract interfaces do not expose destructor!)

Implements pool::IDbContainer.

Definition at line 85 of file DbContainerImp.h.

85{ delete this; }

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

◆ setOption()

virtual DbStatus pool::DbContainerImp::setOption ( const DbOption & opt)
overridevirtual

Set options.

Parameters
opt[IN] Reference to option object.
Returns
DbStatus code indicating success or failure.

Implements pool::IDbContainer.

Reimplemented in pool::RootKeyContainer, pool::RootTreeContainer, and RNTupleContainer.

◆ size()

virtual uint64_t pool::DbContainerImp::size ( )
overridevirtual

Size of the container.

Implements pool::IDbContainer.

Reimplemented in pool::RootKeyContainer, pool::RootTreeContainer, and RNTupleContainer.

◆ store()

virtual DbStatus pool::DbContainerImp::store ( const void * object,
DbContainer & cntH,
ShapeH shape )
overridevirtual

Store object in location.

Implements pool::IDbContainer.

Reimplemented in RNTupleContainer.

◆ transAct()

virtual DbStatus pool::DbContainerImp::transAct ( Transaction::Action )
overridevirtual

◆ useNextRecordId()

virtual void pool::DbContainerImp::useNextRecordId ( uint64_t )
inlineoverridevirtual

Suggest next Record ID for tbe next object written - used only with synced indexes.

Implements pool::IDbContainer.

Reimplemented in pool::RootTreeIndexContainer, and RNTupleContainer.

Definition at line 94 of file DbContainerImp.h.

94{};

◆ writeObject()

virtual DbStatus pool::DbContainerImp::writeObject ( ActionList::value_type & )
inlineprotectedvirtual

Commit single entry to container.

Reimplemented in pool::RootKeyContainer, pool::RootTreeContainer, pool::RootTreeIndexContainer, and RNTupleContainer.

Definition at line 77 of file DbContainerImp.h.

78 { return Error; }
static const DbStatus Error(DbStatus::Error)

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_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::DbContainerImp::m_name
protected

Container name.

Definition at line 72 of file DbContainerImp.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_size

size_t pool::DbContainerImp::m_size
private

Current size of the transaction stack.

Definition at line 69 of file DbContainerImp.h.

◆ m_writeStack

ActionList pool::DbContainerImp::m_writeStack
private

Transaction fifo storage for writing.

Definition at line 67 of file DbContainerImp.h.


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