ATLAS Offline Software
Loading...
Searching...
No Matches
pool::UserDatabase Class Reference

UserDatabase is an implementation of the IDatabase interface. More...

#include <UserDatabase.h>

Inheritance diagram for pool::UserDatabase:
Collaboration diagram for pool::UserDatabase:

Public Member Functions

 UserDatabase (UserSession &session, const std::string &name, const DatabaseSpecification::NameType nameType)
 Constructor.
virtual ~UserDatabase ()
 Destructor.
virtual void connectForRead () override
 Connects explicitly to the database for read operations.
void * readObject (const Token &token, void *object=0)
 Reads an object given a token.
virtual void connectForWrite () override
 Connects explicitly to the database for write/update operations.
Token * writeObject (const std::string &containerName, long minorTechnology, const void *object, const RootType &type)
 Writes an object and returns a token.
virtual void disconnect () override
 Disconnects from the database.
virtual Io::IoFlag openMode () const override
 Returns the opening mode. It can be used to check whether the database is connected.
virtual const std::string & fid () override
 Returns the file identifier of this database.
virtual const std::string & pfn () override
 Returns the physical file name of this database.
virtual bool setTechnology (long technology) override
 Sets the technology identifier for this database.
virtual std::vector< std::string > containers () override
 Returns the names of the containers in this database.
virtual IContainer * containerHandle (const std::string &name) override
 Returns a pointer to a container object. The user acquires ownership of that object.
virtual FileDescriptor * fileDescriptor () override final
 Expose FileDescriptor object for the technology specific DB implementation.
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 Member Functions

virtual bool attributeOfType (const std::string &attributeName, void *data, const std::type_info &typeInfo, const std::string &option) override
 The method returning the attribute data given a name.
virtual bool setAttributeOfType (const std::string &attributeName, const void *data, const std::type_info &typeInfo, const std::string &option) override
 The method setting the attribute data given a name.

Private Member Functions

bool checkInRegistry ()
 Checks in the registry if the database handler already exists.
void initMessaging () const
 Initialize our message level and MessageSvc.

Private Attributes

UserSession & m_session
 Reference to the session.
IFileCatalog & m_catalog
 Reference to the file catalog.
Io::IoFlag m_transactionType
 Transaction type (read/update).
DatabaseRegistry & m_registry
 Reference to the database registry.
std::string m_name
 The database name.
DatabaseSpecification::NameType m_nameType
 The database name spacification.
long m_technology
 The technology identifier of the database.
bool m_technologySet
 Checks if the technology identifier has been set.
DatabaseHandler * m_databaseHandler
 The underlying database handler.
Io::IoFlag m_openMode
 Current open mode.
bool m_alreadyConnected
 Flag indicating whether a connection has been already made once.
std::string m_the_fid
 Other names used.
std::string m_the_pfn
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

UserDatabase is an implementation of the IDatabase interface.

Definition at line 27 of file UserDatabase.h.

Constructor & Destructor Documentation

◆ UserDatabase()

pool::UserDatabase::UserDatabase ( pool::UserSession & session,
const std::string & name,
const DatabaseSpecification::NameType nameType )

Constructor.

Definition at line 20 of file UserDatabase.cxx.

22 :
23 APRMessaging("PersistencySvc::UserDB"),
24 m_session( session ),
25 m_catalog( session.fileCatalog() ),
26 m_transactionType( session.type() ),
27 m_registry( session.registry() ),
28 m_name( name ),
29 m_nameType( nameType ),
30 m_technology( 0 ),
31 m_technologySet( false ),
33 m_openMode( Io::INVALID ),
34 m_alreadyConnected( false ),
35 m_the_fid( "" ),
36 m_the_pfn( "" )
37{
38 this->checkInRegistry();
39}
APRMessaging(const std::string &name)
std::string m_the_fid
Other names used.
Io::IoFlag m_transactionType
Transaction type (read/update).
std::string m_the_pfn
std::string m_name
The database name.
DatabaseRegistry & m_registry
Reference to the database registry.
bool m_alreadyConnected
Flag indicating whether a connection has been already made once.
bool checkInRegistry()
Checks in the registry if the database handler already exists.
IFileCatalog & m_catalog
Reference to the file catalog.
UserSession & m_session
Reference to the session.
DatabaseSpecification::NameType m_nameType
The database name spacification.
long m_technology
The technology identifier of the database.
Io::IoFlag m_openMode
Current open mode.
bool m_technologySet
Checks if the technology identifier has been set.
DatabaseHandler * m_databaseHandler
The underlying database handler.
DatabaseRegistry & registry()
virtual IFileCatalog & fileCatalog()
Returns the file catalog in use.
virtual Io::IoFlag type() const override final
Returns the transaction type.
Definition UserSession.h:83

◆ ~UserDatabase()

pool::UserDatabase::~UserDatabase ( )
virtual

Destructor.

Definition at line 42 of file UserDatabase.cxx.

43{}

Member Function Documentation

◆ attributeOfType()

bool pool::UserDatabase::attributeOfType ( const std::string & attributeName,
void * data,
const std::type_info & typeInfo,
const std::string & option )
overrideprotectedvirtual

The method returning the attribute data given a name.

Implements pool::IDatabase.

Definition at line 363 of file UserDatabase.cxx.

367{
368 if ( ! m_databaseHandler ) return false;
369 else return m_databaseHandler->attribute( attributeName, data, typeInfo, option );
370}

◆ checkInRegistry()

bool pool::UserDatabase::checkInRegistry ( )
private

Checks in the registry if the database handler already exists.

Definition at line 327 of file UserDatabase.cxx.

328{
329 // Check first if the database is already connected.
330 switch( m_nameType ) {
332 m_databaseHandler = m_registry.lookupByPFN( m_name );
333 break;
335 m_databaseHandler = m_registry.lookupByFID( m_name );
336 break;
338 m_databaseHandler = m_registry.lookupByLFN( m_name );
339 break;
340 default:
341 throw std::runtime_error( "Only PFN, LFN and FID database types are currently supported (APR: \" UserDatabase::checkInRegistry \" from \" PersistencySvc \")" );
342 };
343 if ( m_databaseHandler ) {
344 m_alreadyConnected = true;
345 m_technology = m_databaseHandler->technology();
346 m_openMode = m_databaseHandler->accessMode();
350 return true;
351 }
352 else return false;
353}
@ FID
Physical File Name.
Definition IDatabase.h:26
@ LFN
File IDentifier.
Definition IDatabase.h:27

◆ connectForRead()

void pool::UserDatabase::connectForRead ( )
overridevirtual

Connects explicitly to the database for read operations.

Implements pool::IDatabase.

Definition at line 47 of file UserDatabase.cxx.

48{
49 if( !m_databaseHandler && m_transactionType != Io::INVALID ) {
50 // Check if the database is already connected
51 if( !checkInRegistry() ) {
52 // It is not. Connect !
53 switch( m_nameType ) {
55 if ( this->fid().empty() ) {
56 throw std::runtime_error( "PFN \"" + m_name + "\" is not existing (APR: \" UserDatabase::connectForRead \" from \" PersistencySvc \")" );
57 }
58 break;
59
61 if ( this->pfn().empty() ) {
62 throw std::runtime_error( "FID \"" + m_name + "\" is not existing in the catalog (APR: \" UserDatabase::connectForRead \" from \" PersistencySvc \")" );
63 }
64 break;
66 {
67 std::string lfn = m_name;
68 if ( this->fid().empty() ) {
69 throw std::runtime_error( "LFN \"" + m_name + "\" is not existing in the catalog (APR: \" UserDatabase::connectForRead \" from \" PersistencySvc \")" );
70 }
71 this->connectForRead();
72 m_registry.registerDatabaseHandler( m_databaseHandler, lfn );
73 }
74 return;
75 break;
76 default:
77 throw std::runtime_error( "Unknown database name type (APR: \" UserDatabase::connectForRead \" from \" PersistencySvc \")" );
78 };
79
80 // Now we have all the usefull information to open the file.
81 // Check the registry now that we have the FID (in case of ambiguous PFNs)
82 m_databaseHandler = m_registry.lookupByFID( m_the_fid );
83 if( !m_databaseHandler ) {
84 // still no luck - make a new connection
86 }
87 if( m_databaseHandler ) {
88 m_openMode = Io::READ;
89 }
90 else {
91 throw std::runtime_error( "Could not connect to the file (APR: \" UserDatabase::connectForRead \" from \" PersistencySvc \")" );
92 }
93 }
94 }
95}
static const Attributes_t empty
virtual const std::string & pfn() override
Returns the physical file name of this database.
virtual const std::string & fid() override
Returns the file identifier of this database.
virtual void connectForRead() override
Connects explicitly to the database for read operations.

◆ connectForWrite()

void pool::UserDatabase::connectForWrite ( )
overridevirtual

Connects explicitly to the database for write/update operations.

Implements pool::IDatabase.

Definition at line 109 of file UserDatabase.cxx.

110{
111 if( !m_databaseHandler && m_transactionType != Io::INVALID ) {
112 if ( m_transactionType != Io::WRITE && m_transactionType != Io::APPEND ) {
113 throw std::runtime_error( "Could not open a database for write outside an update transaction. (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
114 }
115
116 if ( this->checkInRegistry() ) {
117 if ( m_openMode == Io::READ ) {
118 throw std::runtime_error( "Could not open a database for write that is already connected for read. (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
119 }
120 }
121 else { // The database is not yet connected.
122 bool dbRegistered = false;
123 switch( m_nameType ) {
126 if ( this->fid().empty() ) {
127 // Check if the technology is already set
128 if( ! m_technologySet ) {
129 throw std::runtime_error( "The back end technology has not been specified (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
130 }
131 // register in the catalog
132 pool::DbType dbType( m_technology );
133 pool::DbType dbTypeMajor( dbType.majorType() );
134 m_catalog.registerPFN( m_the_pfn.substr(0, m_the_pfn.find('?')), dbTypeMajor.storageName(), m_the_fid );
135 ATH_MSG_DEBUG("registered PFN: " << m_the_pfn << " with FID:" << m_the_fid);
136 dbRegistered = true;
137 }
138 break;
141 if ( this->pfn().empty() ) {
142 throw std::runtime_error( "Could not find the FID \"" + m_name + "\" in the file catalog (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
143 }
144 break;
146 {
147 std::string lfn = m_name;
148 if ( this->fid().empty() ) {
149 throw std::runtime_error( "Could not find the LFN \"" + m_name + "\" in the file catalog (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
150 }
151 this->connectForWrite();
152 m_registry.registerDatabaseHandler( m_databaseHandler, lfn );
153 }
154 return;
155 break;
156 default:
157 throw std::runtime_error( "Unknown database name type (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
158 };
159
160 m_databaseHandler = m_session.microSessionManager( m_technology ).connect( m_transactionType, m_the_fid, m_the_pfn );
161 if( !m_databaseHandler ) {
162 if( dbRegistered ) {
163 // creation failed, remove entry from the in-memory catalog
164 m_catalog.deleteFID( m_the_fid );
165 }
166 throw std::runtime_error( "Could not connect to the file (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
167 }
168 m_openMode = m_transactionType == Io::WRITE ? Io::WRITE : Io::APPEND;
169 } // Connection established
170
171 } // Database handler retrieved
172}
#define ATH_MSG_DEBUG(x,...)
virtual void connectForWrite() override
Connects explicitly to the database for write/update operations.

◆ containerHandle()

pool::IContainer * pool::UserDatabase::containerHandle ( const std::string & name)
overridevirtual

Returns a pointer to a container object. The user acquires ownership of that object.

Implements pool::IDatabase.

Definition at line 316 of file UserDatabase.cxx.

317{
318 pool::IContainer* container = 0;
319 if ( m_databaseHandler ) {
320 container = m_databaseHandler->container( name );
321 }
322 return container;
323}
const SG::AuxVectorData * container() const
Return the container holding this element.

◆ containers()

std::vector< std::string > pool::UserDatabase::containers ( )
overridevirtual

Returns the names of the containers in this database.

Implements pool::IDatabase.

Definition at line 305 of file UserDatabase.cxx.

306{
307 std::vector< std::string > containers;
308 if ( m_databaseHandler ) {
309 containers = m_databaseHandler->containers();
310 }
311 return containers;
312}
virtual std::vector< std::string > containers() override
Returns the names of the containers in this database.

◆ disconnect()

void pool::UserDatabase::disconnect ( )
overridevirtual

Disconnects from the database.

Implements pool::IDatabase.

Definition at line 189 of file UserDatabase.cxx.

190{
191 if ( m_databaseHandler ) {
192 m_session.microSessionManager( m_technology ).disconnect( m_databaseHandler );
193 m_openMode = Io::INVALID;
194 }
195}

◆ fid()

const std::string & pool::UserDatabase::fid ( )
overridevirtual

Returns the file identifier of this database.

Implements pool::IDatabase.

Definition at line 206 of file UserDatabase.cxx.

207{
208 if ( m_databaseHandler ) return m_databaseHandler->fid();
209 else {
211 else if ( !m_the_fid.empty() ) return m_the_fid;
212 else {
214 std::string technology;
215 m_catalog.lookupFileByPFN( m_name.substr(0, m_name.find('?')), m_the_fid, technology );
216 ATH_MSG_DEBUG("lookupPFN: " << m_name << " returned FID: '" << m_the_fid << "' tech=" << technology);
217 if ( ! m_the_fid.empty() ) {
218 if( technology.empty() ) {
220 ATH_MSG_DEBUG("Retrying 'connect' using assumed PFN " << m_name << " as LFN (no tech found in PFC)" );
221 return m_the_fid;
222 }
225 m_alreadyConnected = true;
226 }
227 else {
228 if( m_transactionType != Io::WRITE ) { // Fetch the FID from the db itself !
229 if( !m_technologySet ) {
230 ATH_MSG_DEBUG("Opening database '" << m_name << "' with no technology set");
232 m_technologySet = true;
233 }
234 m_the_fid = m_session.microSessionManager( m_technology ).fidForPfn( m_name );
235 if( ! m_the_fid.empty() ) {
236 // sanity check - verify that the FID is not registered in PFC under a different name
237 std::string pfn, tech;
238 m_catalog.getFirstPFN( m_the_fid, pfn, tech );
239 if( !pfn.empty() ) {
240 ATH_MSG_WARNING("Opening file '" << m_name << "' which is already registered in the Catalog as '" << pfn
241 <<"' (GUID " << m_the_fid << ") - this is not supported and may even lead to a crash!" );
242 }
244 m_alreadyConnected = true;
245 }
246 }
247 }
248 } /* not PFN */
250 m_the_fid = m_catalog.lookupLFN( m_name );
251 }
252 if ( ! m_the_fid.empty() ) {
255 }
256 return m_the_fid;
257 }
258 return emptyString;
259 }
260}
#define ATH_MSG_WARNING(x,...)
static const std::string & emptyString
int majorType() const
Access to major type.
Definition DbType.h:67
int type() const
Access to full type.
Definition DbType.h:65
static DbType getType(const std::string &name)
Access known storage type object by name.
static const DbType ROOT_StorageType
Definition DbType.h:85

◆ fileDescriptor()

pool::FileDescriptor * pool::UserDatabase::fileDescriptor ( )
finaloverridevirtual

Expose FileDescriptor object for the technology specific DB implementation.

Implements pool::IDatabase.

Definition at line 356 of file UserDatabase.cxx.

357{
358 return m_databaseHandler? &m_databaseHandler->fileDescriptor() : nullptr;
359}

◆ 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)
int outputLevel(const IMessageSvc *ims, const std::string &source)

◆ 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 167 of file AthMessaging.h.

168{
169 MsgStream* ms = m_msg_tls.get();
170 if (!ms) {
171 if (!m_initialized.test_and_set()) initMessaging();
172 ms = new MsgStream(m_imsg,m_nm);
173 m_msg_tls.reset( ms );
174 }
175
176 ms->setLevel (m_lvl);
177 return *ms;
178}
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 182 of file AthMessaging.h.

183{ 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 user did not set explicit message level we have to initialize
154 // the messaging and retrieve the default via the MessageSvc.
155 if (m_lvl==MSG::NIL && !m_initialized.test_and_set()) initMessaging();
156
157 if (m_lvl <= lvl) {
158 msg() << lvl;
159 return true;
160 } else {
161 return false;
162 }
163}

◆ openMode()

Io::IoFlag pool::UserDatabase::openMode ( ) const
overridevirtual

Returns the opening mode. It can be used to check whether the database is connected.

Implements pool::IDatabase.

Definition at line 199 of file UserDatabase.cxx.

200{
201 return m_openMode;
202}

◆ pfn()

const std::string & pool::UserDatabase::pfn ( )
overridevirtual

Returns the physical file name of this database.

Implements pool::IDatabase.

Definition at line 264 of file UserDatabase.cxx.

265{
266 if( m_databaseHandler ) return m_databaseHandler->pfn();
268 if( ! m_the_pfn.empty() ) return m_the_pfn;
269
271 m_the_fid = m_catalog.lookupLFN( m_name );
272 if ( ! m_the_fid.empty() ) {
275 // go from FID=>PFN in the next step
276 }
277 }
279 std::string technology;
280 m_catalog.getFirstPFN( m_name, m_the_pfn, technology );
281 if( !m_the_pfn.empty() ) {
284 m_alreadyConnected = true;
285 }
286 return m_the_pfn;
287 }
288 return emptyString;
289}

◆ readObject()

void * pool::UserDatabase::readObject ( const Token & token,
void * object = 0 )

Reads an object given a token.

Definition at line 99 of file UserDatabase.cxx.

100{
101 if( !m_databaseHandler) {
102 throw std::runtime_error( "Could not open a database for read object. (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
103 }
104 return m_databaseHandler->readObject( token, object );
105}

◆ setAttributeOfType()

bool pool::UserDatabase::setAttributeOfType ( const std::string & attributeName,
const void * data,
const std::type_info & typeInfo,
const std::string & option )
overrideprotectedvirtual

The method setting the attribute data given a name.

Implements pool::IDatabase.

Definition at line 374 of file UserDatabase.cxx.

378{
379 if ( ! m_databaseHandler ) return false;
380 else return m_databaseHandler->setAttribute( attributeName, data, typeInfo, option );
381}

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

◆ setTechnology()

bool pool::UserDatabase::setTechnology ( long technology)
overridevirtual

Sets the technology identifier for this database.

This can only be called for newly created databases before the connect method is called. Otherwise false is returned.

Implements pool::IDatabase.

Definition at line 292 of file UserDatabase.cxx.

293{
294 if ( m_alreadyConnected ) return false;
295 else {
296 pool::DbType dbType( technology );
297 m_technology = dbType.majorType();
298 m_technologySet = true;
299 return true;
300 }
301}

◆ writeObject()

Token * pool::UserDatabase::writeObject ( const std::string & containerName,
long minorTechnology,
const void * object,
const RootType & type )

Writes an object and returns a token.

Definition at line 176 of file UserDatabase.cxx.

180{
181 if( !m_databaseHandler) {
182 throw std::runtime_error( "Could not open a database for write object. (APR: \" UserDatabase::connectForWrite \" from \" PersistencySvc \")" );
183 }
184 return m_databaseHandler->writeObject( containerName, minorTechnology, object, type );
185}

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_alreadyConnected

bool pool::UserDatabase::m_alreadyConnected
private

Flag indicating whether a connection has been already made once.

Definition at line 115 of file UserDatabase.h.

◆ m_catalog

IFileCatalog& pool::UserDatabase::m_catalog
private

Reference to the file catalog.

Definition at line 97 of file UserDatabase.h.

◆ m_databaseHandler

DatabaseHandler* pool::UserDatabase::m_databaseHandler
private

The underlying database handler.

Definition at line 111 of file UserDatabase.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::UserDatabase::m_name
private

The database name.

Definition at line 103 of file UserDatabase.h.

◆ m_nameType

DatabaseSpecification::NameType pool::UserDatabase::m_nameType
private

The database name spacification.

Definition at line 105 of file UserDatabase.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_openMode

Io::IoFlag pool::UserDatabase::m_openMode
private

Current open mode.

Definition at line 113 of file UserDatabase.h.

◆ m_registry

DatabaseRegistry& pool::UserDatabase::m_registry
private

Reference to the database registry.

Definition at line 101 of file UserDatabase.h.

◆ m_session

UserSession& pool::UserDatabase::m_session
private

Reference to the session.

Definition at line 95 of file UserDatabase.h.

◆ m_technology

long pool::UserDatabase::m_technology
private

The technology identifier of the database.

Definition at line 107 of file UserDatabase.h.

◆ m_technologySet

bool pool::UserDatabase::m_technologySet
private

Checks if the technology identifier has been set.

Definition at line 109 of file UserDatabase.h.

◆ m_the_fid

std::string pool::UserDatabase::m_the_fid
private

Other names used.

Definition at line 117 of file UserDatabase.h.

◆ m_the_pfn

std::string pool::UserDatabase::m_the_pfn
private

Definition at line 118 of file UserDatabase.h.

◆ m_transactionType

Io::IoFlag pool::UserDatabase::m_transactionType
private

Transaction type (read/update).

Definition at line 99 of file UserDatabase.h.


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