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

Db objects: DbSessionObj. More...

#include <DbSessionObj.h>

Inheritance diagram for pool::DbSessionObj:
Collaboration diagram for pool::DbSessionObj:

Public Types

typedef DbAccessObj< DbType, DbDomainObjBase
 Type definitions. More...
 
typedef std::map< DbType, DbDomainObj * > Keys
 
typedef Keys::iterator iterator
 
typedef Keys::const_iterator const_iterator
 

Public Member Functions

 DbSessionObj ()
 Standard constructor. More...
 
virtual ~DbSessionObj ()
 Standard destructor. More...
 
IOODatabasedb (const DbType &typ)
 Allow access to the Database implementation. More...
 
DbStatus open ()
 Open session. More...
 
DbStatus close ()
 Close Database session. More...
 
const std::string & name () const
 Access the instance name. More...
 
void setName (const std::string &n)
 Access the instance name. More...
 
DbAccessMode mode () const
 Access mode. More...
 
void setMode (DbAccessMode m)
 Set Access mode. More...
 
const DbTypetype () const
 
const IOODatabasedb () const
 Allow access to the Database implementation. More...
 
int refCount () const
 Access reference counter. More...
 
int addRef () const
 Add reference count. More...
 
int release () const
 Remove reference count. More...
 
size_t size () const
 Object size. More...
 
DbStatus clearEntries ()
 Object cleanup: remove all entries. More...
 
const DbDomainObjfind (const DbType &key) const
 Find object by key (CONST) More...
 
DbDomainObjfind (const DbType &key)
 Find object by key. More...
 
DbStatus add (const DbType &key, DbDomainObj *val)
 Add entry to container. More...
 
DbStatus remove (const DbDomainObj *val)
 Remove entry from container. More...
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
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...
 

Private Member Functions

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

Private Attributes

std::map< DbType, IOODatabase * > m_dbTypes
 Known Implementation types. More...
 
std::atomic< int > m_refCount
 Reference counter. More...
 
DbAccessMode m_mode
 Access mode. More...
 
std::string m_name
 Name of the instance. More...
 
DbType m_type
 Database type. More...
 
Keys m_keys
 Key entry buffer. More...
 
IOODatabasem_pool
 Pointer to specific pool implementation. 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

Db objects: DbSessionObj.

Description: Implementation independent part of a Database session object.

There is a ring of protection around the object. The object can only be accessed through its handle, the technology dependent code and the DbDatabaseObj object hosting the container. This should ensure proper reference counting and inhibit non existing references flying around.

Author
M.Frank
Version
1.0

Definition at line 47 of file DbSessionObj.h.

Member Typedef Documentation

◆ Base

Type definitions.

Definition at line 50 of file DbAccessObj.h.

◆ const_iterator

typedef Keys::const_iterator pool::DbAccessObj< DbType , DbDomainObj >::const_iterator
inherited

Definition at line 53 of file DbAccessObj.h.

◆ iterator

typedef Keys::iterator pool::DbAccessObj< DbType , DbDomainObj >::iterator
inherited

Definition at line 52 of file DbAccessObj.h.

◆ Keys

typedef std::map< DbType , DbDomainObj * > pool::DbAccessObj< DbType , DbDomainObj >::Keys
inherited

Definition at line 51 of file DbAccessObj.h.

Constructor & Destructor Documentation

◆ DbSessionObj()

pool::DbSessionObj::DbSessionObj ( )

Standard constructor.

◆ ~DbSessionObj()

virtual pool::DbSessionObj::~DbSessionObj ( )
virtual

Standard destructor.

Member Function Documentation

◆ add()

DbStatus pool::DbAccessObj< DbType , DbDomainObj >::add ( const DbType key,
DbDomainObj val 
)
inlineinherited

Add entry to container.

Definition at line 142 of file DbAccessObj.h.

142  {
143  iterator i = m_keys.find(key);
144  if ( m_keys.end() == i ) {
145  m_keys.insert(std::make_pair(key, val));
146  val->addRef();
147  return Success;
148  }
149  return Error;
150  }

◆ addRef()

int pool::DbAccessObj< DbType , DbDomainObj >::addRef
inlineinherited

Add reference count.

Definition at line 91 of file DbAccessObj.h.

91  {
92 #ifdef DEBUG_REFCOUNTS
93  std::cout << typeid(*this).name()
94  << " "
95  << m_name
96  << " Refcount:"
97  << m_refCount+1
98  << std::endl;
99 #endif
100  return ++m_refCount;
101  }

◆ begin() [1/2]

iterator pool::DbAccessObj< DbType , DbDomainObj >::begin
inlineinherited

Definition at line 163 of file DbAccessObj.h.

163 { return m_keys.begin(); }

◆ begin() [2/2]

const_iterator pool::DbAccessObj< DbType , DbDomainObj >::begin
inlineinherited

Definition at line 164 of file DbAccessObj.h.

164 { return m_keys.begin(); }

◆ clearEntries()

DbStatus pool::DbAccessObj< DbType , DbDomainObj >::clearEntries
inlineinherited

Object cleanup: remove all entries.

Definition at line 123 of file DbAccessObj.h.

123  {
124  Keys k = m_keys;
125  for(iterator j = k.begin(); j != k.end(); ++j ) {
126  (*j).second->release();
127  }
128  m_keys.clear();
129  return Success;
130  }

◆ close()

DbStatus pool::DbSessionObj::close ( )

Close Database session.

◆ db() [1/2]

Allow access to the Database implementation.

Definition at line 86 of file DbAccessObj.h.

86 { return m_pool; }

◆ db() [2/2]

IOODatabase* pool::DbSessionObj::db ( const DbType typ)

Allow access to the Database implementation.

◆ end() [1/2]

iterator pool::DbAccessObj< DbType , DbDomainObj >::end
inlineinherited

Definition at line 165 of file DbAccessObj.h.

165 { return m_keys.end(); }

◆ end() [2/2]

Definition at line 166 of file DbAccessObj.h.

166 { return m_keys.end(); }

◆ find() [1/2]

DbDomainObj * pool::DbAccessObj< DbType , DbDomainObj >::find ( const DbType key)
inlineinherited

Find object by key.

Definition at line 137 of file DbAccessObj.h.

137  {
138  iterator i = m_keys.find(key);
139  return (m_keys.end() == i) ? 0 : (*i).second;
140  }

◆ find() [2/2]

const DbDomainObj * pool::DbAccessObj< DbType , DbDomainObj >::find ( const DbType key) const
inlineinherited

Find object by key (CONST)

Definition at line 132 of file DbAccessObj.h.

132  {
133  const_iterator i = m_keys.find(key);
134  return (m_keys.end() == i) ? 0 : (*i).second;
135  }

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

◆ mode()

DbAccessMode pool::DbAccessObj< DbType , DbDomainObj >::mode
inlineinherited

Access mode.

Definition at line 80 of file DbAccessObj.h.

80 { return m_mode; }

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

const std::string& pool::DbAccessObj< DbType , DbDomainObj >::name
inlineinherited

Access the instance name.

Definition at line 76 of file DbAccessObj.h.

76 { return m_name; }

◆ open()

DbStatus pool::DbSessionObj::open ( )

Open session.

◆ refCount()

int pool::DbAccessObj< DbType , DbDomainObj >::refCount
inlineinherited

Access reference counter.

Definition at line 89 of file DbAccessObj.h.

89 { return m_refCount; }

◆ release()

int pool::DbAccessObj< DbType , DbDomainObj >::release
inlineinherited

Remove reference count.

Definition at line 103 of file DbAccessObj.h.

103  {
104  int count = --m_refCount;
105 #ifdef DEBUG_REFCOUNTS
106  std::cout << typeid(*this).name()
107  << " "
108  << m_name
109  << " Refcount:"
110  << count
111  << std::endl;
112 #endif
113  if ( count == 0 ) {
114  delete this;
115  }
116  return count;
117  }

◆ remove()

DbStatus pool::DbAccessObj< DbType , DbDomainObj >::remove ( const DbDomainObj val)
inlineinherited

Remove entry from container.

Definition at line 152 of file DbAccessObj.h.

152  {
153  for (iterator j = m_keys.begin(); j != m_keys.end(); ++j ) {
154  if ( (*j).second == val ) {
155  TYPE* p = (*j).second;
156  m_keys.erase(j);
157  p->release();
158  return Success;
159  }
160  }
161  return Error;
162  }

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

◆ setMode()

void pool::DbAccessObj< DbType , DbDomainObj >::setMode ( DbAccessMode  m)
inlineinherited

Set Access mode.

Definition at line 82 of file DbAccessObj.h.

82 { m_mode = m; }

◆ setName()

void pool::DbAccessObj< DbType , DbDomainObj >::setName ( const std::string &  n)
inlineinherited

Access the instance name.

Definition at line 78 of file DbAccessObj.h.

78 { m_name = n; }

◆ size()

size_t pool::DbAccessObj< DbType , DbDomainObj >::size
inlineinherited

Object size.

Definition at line 119 of file DbAccessObj.h.

119  {
120  return m_keys.size();
121  }

◆ type()

const DbType& pool::DbAccessObj< DbType , DbDomainObj >::type
inlineinherited

Definition at line 84 of file DbAccessObj.h.

84 { return m_type; }

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_dbTypes

std::map<DbType, IOODatabase*> pool::DbSessionObj::m_dbTypes
private

Known Implementation types.

Definition at line 50 of file DbSessionObj.h.

◆ m_imsg

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

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_keys

Keys pool::DbAccessObj< DbType , DbDomainObj >::m_keys
privateinherited

Key entry buffer.

Definition at line 64 of file DbAccessObj.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_mode

DbAccessMode pool::DbAccessObj< DbType , DbDomainObj >::m_mode
privateinherited

Access mode.

Definition at line 58 of file DbAccessObj.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::DbAccessObj< DbType , DbDomainObj >::m_name
privateinherited

Name of the instance.

Definition at line 60 of file DbAccessObj.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_pool

IOODatabase* pool::DbAccessObj< DbType , DbDomainObj >::m_pool
privateinherited

Pointer to specific pool implementation.

Definition at line 66 of file DbAccessObj.h.

◆ m_refCount

std::atomic<int> pool::DbAccessObj< DbType , DbDomainObj >::m_refCount
mutableprivateinherited

Reference counter.

Definition at line 56 of file DbAccessObj.h.

◆ m_type

DbType pool::DbAccessObj< DbType , DbDomainObj >::m_type
privateinherited

Database type.

Definition at line 62 of file DbAccessObj.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::DbAccessObj< DbType, DbDomainObj >::m_mode
DbAccessMode m_mode
Access mode.
Definition: DbAccessObj.h:58
pool::DbAccessObj< DbType, DbDomainObj >::m_type
DbType m_type
Database type.
Definition: DbAccessObj.h:62
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
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
pool::DbAccessObj< DbType, DbDomainObj >::m_refCount
std::atomic< int > m_refCount
Reference counter.
Definition: DbAccessObj.h:56
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:727
pool::DbAccessObj< DbType, DbDomainObj >::const_iterator
Keys::const_iterator const_iterator
Definition: DbAccessObj.h:53
pool::DbAccessObj< DbType, DbDomainObj >::m_keys
Keys m_keys
Key entry buffer.
Definition: DbAccessObj.h:64
pool::DbAccessObj< DbType, DbDomainObj >::m_name
std::string m_name
Name of the instance.
Definition: DbAccessObj.h:60
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:163
pool::DbAccessObj< DbType, DbDomainObj >::iterator
Keys::iterator iterator
Definition: DbAccessObj.h:52
TYPE
#define TYPE(CODE, TYP, IOTYP)
pool::DbAccessObj< DbType, DbDomainObj >::Keys
std::map< DbType, DbDomainObj * > Keys
Definition: DbAccessObj.h:51
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
L1Topo::Error
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition: Error.h:16
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
pool::DbAccessObj< DbType, DbDomainObj >::m_pool
IOODatabase * m_pool
Pointer to specific pool implementation.
Definition: DbAccessObj.h:66
fitman.k
k
Definition: fitman.py:528
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
python.SystemOfUnits.ms
float ms
Definition: SystemOfUnits.py:148