ATLAS Offline Software
Loading...
Searching...
No Matches
pool::DbAccessObj< KEY, TYPE > Class Template Reference

Description: More...

#include <StorageSvc/DbAccessObj.h>

Inheritance diagram for pool::DbAccessObj< KEY, TYPE >:
Collaboration diagram for pool::DbAccessObj< KEY, TYPE >:

Public Types

typedef DbAccessObj< KEY, TYPEBase
 Type definitions.
typedef std::map< KEY, TYPE * > Keys
typedef Keys::iterator iterator
typedef Keys::const_iterator const_iterator

Public Member Functions

size_t size () const
 Object size.
void clearEntries ()
 Object cleanup: remove all entries.
const TYPEfind (const KEY &key) const
 Find object by key (CONST).
TYPEfind (const KEY &key)
 Find object by key.
StatusCode add (const KEY &key, TYPE *val)
 Add entry to container.
StatusCode remove (const TYPE *val)
 Remove entry from container.
iterator begin ()
const_iterator begin () const
iterator end ()
const_iterator end () const
 DbAccessObjBase (const std::string &n, Io::IoFlag m, const DbType &t, IOODatabase *s=0)
 Constructor from the base class.
const std::string & name () const
 Access the instance name.
void setName (const std::string &n)
 Access the instance name.
Io::IoFlag mode () const
 Access mode.
void setMode (Io::IoFlag m)
 Set Access mode.
const DbTypetype () const
const IOODatabasedb () const
 Allow access to the Database implementation.
IOODatabasedb ()
int refCount () const
 Access reference counter.
int addRef () const
 Add reference count.
int release () const
 Remove reference count.

Private Attributes

Keys m_keys
 Key entry buffer.
std::atomic< int > m_refCount
 Reference counter.
Io::IoFlag m_mode
 Access mode.
std::string m_name
 Name of the instance.
DbType m_type
 Database type.
IOODatabasem_pool
 Pointer to specific pool implementation.

Detailed Description

template<class KEY, class TYPE>
class pool::DbAccessObj< KEY, TYPE >

Description:

Templated base class for "abstarct" container objects. These abstarct containers are: DnSessions, DbDomainObjs, DbDatabaseObjs and DbContainerObjs.

Author
M.Frank
Version
1.0

Definition at line 115 of file DbAccessObj.h.

Member Typedef Documentation

◆ Base

template<class KEY, class TYPE>
typedef DbAccessObj< KEY , TYPE > pool::DbAccessObj< KEY, TYPE >::Base

Type definitions.

Definition at line 118 of file DbAccessObj.h.

◆ const_iterator

template<class KEY, class TYPE>
typedef Keys::const_iterator pool::DbAccessObj< KEY, TYPE >::const_iterator

Definition at line 121 of file DbAccessObj.h.

◆ iterator

template<class KEY, class TYPE>
typedef Keys::iterator pool::DbAccessObj< KEY, TYPE >::iterator

Definition at line 120 of file DbAccessObj.h.

◆ Keys

template<class KEY, class TYPE>
typedef std::map< KEY, TYPE* > pool::DbAccessObj< KEY, TYPE >::Keys

Definition at line 119 of file DbAccessObj.h.

Member Function Documentation

◆ add()

template<class KEY, class TYPE>
StatusCode pool::DbAccessObj< KEY, TYPE >::add ( const KEY & key,
TYPE * val )
inline

Add entry to container.

Definition at line 151 of file DbAccessObj.h.

151 {
152 iterator i = m_keys.find(key);
153 if ( m_keys.end() == i ) {
154 m_keys.insert(std::make_pair(key, val));
155 val->addRef();
156 return StatusCode::SUCCESS;
157 }
158 return StatusCode::FAILURE;
159 }
int addRef() const
Add reference count.
Definition DbAccessObj.h:85
Description:
Keys::iterator iterator
Keys m_keys
Key entry buffer.

◆ addRef()

int pool::DbAccessObjBase::addRef ( ) const
inlineinherited

Add reference count.

Definition at line 85 of file DbAccessObj.h.

85 {
86#ifdef DEBUG_REFCOUNTS
87 std::cout << typeid(*this).name()
88 << " "
89 << m_name
90 << " Refcount:"
91 << m_refCount+1
92 << std::endl;
93#endif
94 return ++m_refCount;
95 }
std::string m_name
Name of the instance.
Definition DbAccessObj.h:56
std::atomic< int > m_refCount
Reference counter.
Definition DbAccessObj.h:52

◆ begin() [1/2]

template<class KEY, class TYPE>
iterator pool::DbAccessObj< KEY, TYPE >::begin ( )
inline

Definition at line 172 of file DbAccessObj.h.

172{ return m_keys.begin(); }

◆ begin() [2/2]

template<class KEY, class TYPE>
const_iterator pool::DbAccessObj< KEY, TYPE >::begin ( ) const
inline

Definition at line 173 of file DbAccessObj.h.

173{ return m_keys.begin(); }

◆ clearEntries()

template<class KEY, class TYPE>
void pool::DbAccessObj< KEY, TYPE >::clearEntries ( )
inline

Object cleanup: remove all entries.

Definition at line 136 of file DbAccessObj.h.

136 {
137 for( const auto & k : m_keys ) k.second->release();
138 m_keys.clear();
139 }
int release() const
Remove reference count.
Definition DbAccessObj.h:97

◆ db() [1/2]

IOODatabase * pool::DbAccessObjBase::db ( )
inlineinherited

Definition at line 81 of file DbAccessObj.h.

81{ return m_pool; }
IOODatabase * m_pool
Pointer to specific pool implementation.
Definition DbAccessObj.h:60

◆ db() [2/2]

const IOODatabase * pool::DbAccessObjBase::db ( ) const
inlineinherited

Allow access to the Database implementation.

Definition at line 80 of file DbAccessObj.h.

80{ return m_pool; }

◆ DbAccessObjBase()

template<class KEY, class TYPE>
pool::DbAccessObjBase::DbAccessObjBase ( const std::string & n,
Io::IoFlag m,
const DbType & t,
IOODatabase * s = 0 )
inline

Constructor from the base class.

Definition at line 64 of file DbAccessObj.h.

66 { if( m_pool ) m_pool->addRef(); }
DbType m_type
Database type.
Definition DbAccessObj.h:58
Io::IoFlag m_mode
Access mode.
Definition DbAccessObj.h:54

◆ end() [1/2]

template<class KEY, class TYPE>
iterator pool::DbAccessObj< KEY, TYPE >::end ( )
inline

Definition at line 174 of file DbAccessObj.h.

174{ return m_keys.end(); }

◆ end() [2/2]

template<class KEY, class TYPE>
const_iterator pool::DbAccessObj< KEY, TYPE >::end ( ) const
inline

Definition at line 175 of file DbAccessObj.h.

175{ return m_keys.end(); }

◆ find() [1/2]

template<class KEY, class TYPE>
TYPE * pool::DbAccessObj< KEY, TYPE >::find ( const KEY & key)
inline

Find object by key.

Definition at line 146 of file DbAccessObj.h.

146 {
147 iterator i = m_keys.find(key);
148 return (m_keys.end() == i) ? 0 : (*i).second;
149 }

◆ find() [2/2]

template<class KEY, class TYPE>
const TYPE * pool::DbAccessObj< KEY, TYPE >::find ( const KEY & key) const
inline

Find object by key (CONST).

Definition at line 141 of file DbAccessObj.h.

141 {
142 const_iterator i = m_keys.find(key);
143 return (m_keys.end() == i) ? 0 : (*i).second;
144 }
Keys::const_iterator const_iterator

◆ mode()

Io::IoFlag pool::DbAccessObjBase::mode ( ) const
inlineinherited

Access mode.

Definition at line 74 of file DbAccessObj.h.

74{ return m_mode; }

◆ name()

const std::string & pool::DbAccessObjBase::name ( ) const
inlineinherited

Access the instance name.

Definition at line 70 of file DbAccessObj.h.

70{ return m_name; }

◆ refCount()

int pool::DbAccessObjBase::refCount ( ) const
inlineinherited

Access reference counter.

Definition at line 83 of file DbAccessObj.h.

83{ return m_refCount; }

◆ release()

int pool::DbAccessObjBase::release ( ) const
inlineinherited

Remove reference count.

Definition at line 97 of file DbAccessObj.h.

97 {
98 int count = --m_refCount;
99#ifdef DEBUG_REFCOUNTS
100 std::cout << typeid(*this).name()
101 << " "
102 << m_name
103 << " Refcount:"
104 << count
105 << std::endl;
106#endif
107 if ( count == 0 ) {
108 delete this;
109 }
110 return count;
111 }
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:148

◆ remove()

template<class KEY, class TYPE>
StatusCode pool::DbAccessObj< KEY, TYPE >::remove ( const TYPE * val)
inline

Remove entry from container.

Definition at line 161 of file DbAccessObj.h.

161 {
162 for (iterator j = m_keys.begin(); j != m_keys.end(); ++j ) {
163 if ( (*j).second == val ) {
164 TYPE* p = (*j).second;
165 m_keys.erase(j);
166 p->release();
167 return StatusCode::SUCCESS;
168 }
169 }
170 return StatusCode::FAILURE;
171 }

◆ setMode()

void pool::DbAccessObjBase::setMode ( Io::IoFlag m)
inlineinherited

Set Access mode.

Definition at line 76 of file DbAccessObj.h.

◆ setName()

void pool::DbAccessObjBase::setName ( const std::string & n)
inlineinherited

Access the instance name.

Definition at line 72 of file DbAccessObj.h.

◆ size()

template<class KEY, class TYPE>
size_t pool::DbAccessObj< KEY, TYPE >::size ( ) const
inline

Object size.

Definition at line 132 of file DbAccessObj.h.

132 {
133 return m_keys.size();
134 }

◆ type()

const DbType & pool::DbAccessObjBase::type ( ) const
inlineinherited

Definition at line 78 of file DbAccessObj.h.

78{ return m_type; }

Member Data Documentation

◆ m_keys

template<class KEY, class TYPE>
Keys pool::DbAccessObj< KEY, TYPE >::m_keys
private

Key entry buffer.

Definition at line 125 of file DbAccessObj.h.

◆ m_mode

Io::IoFlag pool::DbAccessObjBase::m_mode
privateinherited

Access mode.

Definition at line 54 of file DbAccessObj.h.

◆ m_name

std::string pool::DbAccessObjBase::m_name
privateinherited

Name of the instance.

Definition at line 56 of file DbAccessObj.h.

◆ m_pool

IOODatabase* pool::DbAccessObjBase::m_pool
privateinherited

Pointer to specific pool implementation.

Definition at line 60 of file DbAccessObj.h.

◆ m_refCount

std::atomic<int> pool::DbAccessObjBase::m_refCount
mutableprivateinherited

Reference counter.

Definition at line 52 of file DbAccessObj.h.

◆ m_type

DbType pool::DbAccessObjBase::m_type
privateinherited

Database type.

Definition at line 58 of file DbAccessObj.h.


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