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, TYPE > Base
 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 TYPE * find (const KEY &key) const
 Find object by key (CONST).
TYPE * find (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 DbType & type () const
const IOODatabase * db () const
 Allow access to the Database implementation.
IOODatabase * db ()
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.
IOODatabase * m_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: