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

#include <src/RootKeyContainer.h>

Inheritance diagram for pool::RootKeyContainer:
Collaboration diagram for pool::RootKeyContainer:

Public Member Functions

 RootKeyContainer (const std::string &name)
 
virtual ~RootKeyContainer ()
 
 RootKeyContainer (const RootKeyContainer &)=delete
 
RootKeyContaineroperator= (const RootKeyContainer &)=delete
 
virtual DbStatus close () override
 Close the container and deallocate resources. More...
 
virtual DbStatus open (DbDatabase &dbH, const std::string &nam, const DbTypeInfo *info, DbAccessMode mod) override
 Open the container for object access. More...
 
virtual DbStatus checkAccess (DbDatabase &dbH, const std::string &nam) const override final
 Check if we can access the container for reading with the given type. More...
 
virtual DbStatus select (DbSelect &sel) override
 Define selection. More...
 
virtual uint64_t size () override
 Number of entries within the container. More...
 
virtual uint64_t nextRecordId () override
 Number of record in the container. More...
 
virtual DbStatus fetch (DbSelect &sel) override
 Fetch next object address of the selection to set token. More...
 
virtual DbStatus fetch (const Token::OID_t &linkH, Token::OID_t &stmt) override
 Fetch a column identified by its link in the container. More...
 
virtual DbStatus loadObject (void **ptr, ShapeH shape, Token::OID_t &oid) override
 Find object by object identifier and load it into memory. More...
 
virtual DbStatus load (void **ptr, ShapeH shape, const Token::OID_t &linkH, Token::OID_t &oid, bool any_next) override
 Interface Implementation: Find entry in container. More...
 
virtual DbStatus getOption (DbOption &opt) override
 Access options. More...
 
virtual DbStatus setOption (const DbOption &opt) override
 Set options. More...
 
virtual DbStatus transAct (Transaction::Action action) override
 Execute end of object modification requests during a transaction. More...
 
virtual void release () override
 Release instance (Abstract interfaces do not expose destructor!) More...
 
virtual std::string name () const override
 Get container name. More...
 
virtual void useNextRecordId (uint64_t) override
 Suggest next Record ID for tbe next object written - used only with synced indexes. More...
 
virtual DbStatus store (const void *object, DbContainer &cntH, ShapeH shape) override
 Store object in location. More...
 
virtual DbStatus allocate (DbContainer &cntH, const void *object, ShapeH shape, Token::OID_t &oid) override
 In place allocation of object location. More...
 
virtual DbStatus clearStack ()
 Clear Transaction stack containing transaction requests. More...
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Protected Types

typedef std::vector< DbActionActionList
 

Protected Member Functions

virtual DbStatus writeObject (ActionList::value_type &) override
 Commit single entry to container. More...
 
int stackType () const
 Access accumulated stack entry types. More...
 
size_t stackSize () const
 Access stack size. More...
 
ActionList::value_type * stackEntry (size_t which)
 Internal: get access to stack entry. More...
 
virtual DbStatus commitTransaction ()
 Execute object modification requests during a transaction. More...
 

Protected Attributes

std::string m_name
 Container name. More...
 
bool m_canUpdate
 Flag to indicate if object updates are supported. More...
 
bool m_canDestroy
 Flag to indicate if object removals are supported. More...
 

Private Member Functions

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

Private Attributes

TDirectory * m_dir
 Reference to the root tree object. More...
 
DbDatabase m_dbH
 Parent Database handle. More...
 
RootDatabasem_rootDb
 Root database file reference. More...
 
RootKeyIOHandlerm_ioHandler
 CINT IO handler to allow user overloads.... More...
 
int m_policy
 Policy flag. More...
 
int m_ioBytes
 Number of bytes written/read during last operation. Set to -1 if it failed. More...
 
ActionList m_stack
 Transaction fifo storage for writing. More...
 
size_t m_size
 Current size of the transaction stack. More...
 
size_t m_writeSize
 Number of objects to be written out during open transaction. More...
 
int m_stackType
 Accumulated stack entry types. More...
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Detailed Description

Description: ROOT specific implementation of Database container. Since objects in root are stored in "trees with branches", this object corresponds top a tuple (Tree/Branch), where each object type (determined by the location of the transient object within the data store) is accessed by the "Event" number inside its tree.

Author
M.Frank
Date
1/8/2002
Version
1.0

Definition at line 45 of file RootKeyContainer.h.

Member Typedef Documentation

◆ ActionList

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

Definition at line 64 of file DbContainerImp.h.

Constructor & Destructor Documentation

◆ RootKeyContainer() [1/2]

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

◆ ~RootKeyContainer()

virtual pool::RootKeyContainer::~RootKeyContainer ( )
virtual

◆ RootKeyContainer() [2/2]

pool::RootKeyContainer::RootKeyContainer ( const RootKeyContainer )
delete

Member Function Documentation

◆ allocate()

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

In place allocation of object location.

Implements pool::IDbContainer.

◆ checkAccess()

virtual DbStatus pool::RootKeyContainer::checkAccess ( DbDatabase dbH,
const std::string &  nam 
) const
finaloverridevirtual

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

Implements pool::IDbContainer.

◆ clearStack()

virtual DbStatus pool::DbContainerImp::clearStack ( )
virtualinherited

Clear Transaction stack containing transaction requests.

◆ close()

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

Close the container and deallocate resources.

Reimplemented from pool::DbContainerImp.

◆ commitTransaction()

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

Execute object modification requests during a transaction.

◆ fetch() [1/2]

virtual DbStatus pool::RootKeyContainer::fetch ( const Token::OID_t linkH,
Token::OID_t stmt 
)
overridevirtual

Fetch a column identified by its link in the container.

Reimplemented from pool::DbContainerImp.

◆ fetch() [2/2]

virtual DbStatus pool::RootKeyContainer::fetch ( DbSelect sel)
overridevirtual

Fetch next object address of the selection to set token.

Reimplemented from pool::DbContainerImp.

◆ getOption()

virtual DbStatus pool::RootKeyContainer::getOption ( DbOption opt)
overridevirtual

Access options.

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

Reimplemented from pool::DbContainerImp.

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

◆ load()

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

Interface Implementation: Find entry in container.

Reimplemented from pool::DbContainerImp.

◆ loadObject()

virtual DbStatus pool::RootKeyContainer::loadObject ( void **  ptr,
ShapeH  shape,
Token::OID_t oid 
)
overridevirtual

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.

Implements pool::DbContainerImp.

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

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

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

Get container name.

Implements pool::IDbContainer.

Definition at line 107 of file DbContainerImp.h.

108  { return m_name; }

◆ nextRecordId()

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

Number of record in the container.

Reimplemented from pool::DbContainerImp.

◆ open()

virtual DbStatus pool::RootKeyContainer::open ( DbDatabase dbH,
const std::string &  nam,
const DbTypeInfo info,
DbAccessMode  mod 
)
overridevirtual

Open the container for object access.

Implements pool::IDbContainer.

◆ operator=()

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

◆ release()

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

Release instance (Abstract interfaces do not expose destructor!)

Implements pool::IDbContainer.

Definition at line 103 of file DbContainerImp.h.

103 { delete this; }

◆ select()

virtual DbStatus pool::RootKeyContainer::select ( DbSelect sel)
overridevirtual

Define selection.

Implements pool::IDbContainer.

◆ 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::RootKeyContainer::setOption ( const DbOption opt)
overridevirtual

Set options.

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

Reimplemented from pool::DbContainerImp.

◆ size()

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

Number of entries within the container.

Reimplemented from pool::DbContainerImp.

◆ stackEntry()

ActionList::value_type* pool::DbContainerImp::stackEntry ( size_t  which)
inlineprotectedinherited

Internal: get access to stack entry.

Definition at line 92 of file DbContainerImp.h.

93  { return (which <= m_size) ? &(*(m_stack.begin()+which)) : 0; }

◆ stackSize()

size_t pool::DbContainerImp::stackSize ( ) const
inlineprotectedinherited

Access stack size.

Definition at line 89 of file DbContainerImp.h.

90  { return m_size; }

◆ stackType()

int pool::DbContainerImp::stackType ( ) const
inlineprotectedinherited

Access accumulated stack entry types.

Definition at line 86 of file DbContainerImp.h.

87  { return m_stackType; }

◆ store()

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

Store object in location.

Implements pool::IDbContainer.

Reimplemented in RNTupleContainer.

◆ transAct()

virtual DbStatus pool::RootKeyContainer::transAct ( Transaction::Action  action)
overridevirtual

Execute end of object modification requests during a transaction.

Parameters
refTr[IN] Transaction reference
Returns
DbStatus code indicating success or failure.
Execute transaction action

Reimplemented from pool::DbContainerImp.

◆ useNextRecordId()

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

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 112 of file DbContainerImp.h.

112 {};

◆ writeObject()

virtual DbStatus pool::RootKeyContainer::writeObject ( ActionList::value_type &  )
overrideprotectedvirtual

Commit single entry to container.

Reimplemented from pool::DbContainerImp.

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_canDestroy

bool pool::DbContainerImp::m_canDestroy
protectedinherited

Flag to indicate if object removals are supported.

Definition at line 81 of file DbContainerImp.h.

◆ m_canUpdate

bool pool::DbContainerImp::m_canUpdate
protectedinherited

Flag to indicate if object updates are supported.

Definition at line 79 of file DbContainerImp.h.

◆ m_dbH

DbDatabase pool::RootKeyContainer::m_dbH
private

Parent Database handle.

Definition at line 49 of file RootKeyContainer.h.

◆ m_dir

TDirectory* pool::RootKeyContainer::m_dir
private

Reference to the root tree object.

Definition at line 47 of file RootKeyContainer.h.

◆ m_imsg

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

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_ioBytes

int pool::RootKeyContainer::m_ioBytes
private

Number of bytes written/read during last operation. Set to -1 if it failed.

Definition at line 57 of file RootKeyContainer.h.

◆ m_ioHandler

RootKeyIOHandler* pool::RootKeyContainer::m_ioHandler
private

CINT IO handler to allow user overloads....

Definition at line 53 of file RootKeyContainer.h.

◆ m_lvl

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

Current logging level.

Definition at line 138 of file AthMessaging.h.

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

Container name.

Definition at line 77 of file DbContainerImp.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_policy

int pool::RootKeyContainer::m_policy
private

Policy flag.

Definition at line 55 of file RootKeyContainer.h.

◆ m_rootDb

RootDatabase* pool::RootKeyContainer::m_rootDb
private

Root database file reference.

Definition at line 51 of file RootKeyContainer.h.

◆ m_size

size_t pool::DbContainerImp::m_size
privateinherited

Current size of the transaction stack.

Definition at line 70 of file DbContainerImp.h.

◆ m_stack

ActionList pool::DbContainerImp::m_stack
privateinherited

Transaction fifo storage for writing.

Definition at line 68 of file DbContainerImp.h.

◆ m_stackType

int pool::DbContainerImp::m_stackType
privateinherited

Accumulated stack entry types.

Definition at line 74 of file DbContainerImp.h.

◆ m_writeSize

size_t pool::DbContainerImp::m_writeSize
privateinherited

Number of objects to be written out during open transaction.

Definition at line 72 of file DbContainerImp.h.


The documentation for this class was generated from the following file:
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
pool::DbContainerImp::m_size
size_t m_size
Current size of the transaction stack.
Definition: DbContainerImp.h:70
pool::DbContainerImp::m_name
std::string m_name
Container name.
Definition: DbContainerImp.h:77
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
python.Utils.unixtools.which
def which(filename, env=os.environ)
UNIX-style which ---------------------------------------------------------—.
Definition: unixtools.py:39
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:163
pool::DbContainerImp::m_stackType
int m_stackType
Accumulated stack entry types.
Definition: DbContainerImp.h:74
pool::DbContainerImp::m_stack
ActionList m_stack
Transaction fifo storage for writing.
Definition: DbContainerImp.h:68
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
TrigConf::MSGTC::NIL
@ NIL
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:22
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
python.SystemOfUnits.ms
float ms
Definition: SystemOfUnits.py:148