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

UserSession is an implementation of the ISession interface. More...

#include <UserSession.h>

Inheritance diagram for pool::PersistencySvc::UserSession:
Collaboration diagram for pool::PersistencySvc::UserSession:

Public Types

enum  Type { INACTIVE , READ , UPDATE }
 Transaction type enumeration. More...

Public Member Functions

 UserSession (IFileCatalog &fileCatalog)
 Constructor.
virtual ~UserSession ()
 Destructor.
 UserSession (const UserSession &)=delete
UserSessionoperator= (const UserSession &)=delete
virtual void * readObject (const Token &token, void *object=0) override
 Retrieves an object from persistent store and return with type information The handle to the reflection class is necessary to later delete the object.
virtual TokenregisterForWrite (const Placement &place, const void *object, const RootType &type) override
 registerForWrite registers an object for writing to the persistent medium higher level interactions with the framework are necessary.
DatabaseRegistryregistry ()
virtual void setDefaultConnectionPolicy (const DatabaseConnectionPolicy &policy) override final
 Sets the default policy when databases are opened/connected.
virtual const DatabaseConnectionPolicydefaultConnectionPolicy () const override final
 Retrieves the default connection policy.
virtual bool disconnectAll () override final
 Explicitly disconnects all the databases.
virtual ITransactiontransaction () override final
 Returns the transaction interface.
virtual const ITransactiontransaction () const override final
virtual bool start (ITransaction::Type type=READ) override final
 Starts a new transaction. Returns the success of the operation.
virtual bool commit () override final
 Commits the transaction.
virtual bool commitAndHold () override final
 Commits and holds the transaction.
virtual bool isActive () const override final
 Checks if the transaction is active.
virtual ITransaction::Type type () const override final
 Returns the transaction type.
ITransaction::Type transactionType () const
 Returns the transaction type.
virtual std::unique_ptr< IDatabasedatabaseHandle (const std::string &dbName, DatabaseSpecification::NameType dbNameType) override final
 Creates and returns a new database handle object.
virtual IFileCatalogfileCatalog () override final
 Returns the file catalog in use.
void setFileCatalog (IFileCatalog &catalog)
 Set the file catalog to be used.
virtual const ITechnologySpecificAttributestechnologySpecificAttributes (long technology) const override final
 Returns the object holding the technology specific attributes for a given technology domain.
virtual ITechnologySpecificAttributestechnologySpecificAttributes (long technology) override final
MicroSessionManagermicroSessionManager (long technology)
 Returns the technology given a technology type.
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.

Private Member Functions

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

Private Attributes

DatabaseConnectionPolicym_policy
IFileCatalogm_catalog
DatabaseRegistrym_registry
ITransaction::Type m_transactionType
std::map< long, std::unique_ptr< MicroSessionManager > > m_technologies
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

UserSession is an implementation of the ISession interface.

Definition at line 30 of file UserSession.h.

Member Enumeration Documentation

◆ Type

enum pool::ITransaction::Type
inherited

Transaction type enumeration.

Enumerator
INACTIVE 
READ 
UPDATE 

Definition at line 22 of file ITransaction.h.

Constructor & Destructor Documentation

◆ UserSession() [1/2]

pool::PersistencySvc::UserSession::UserSession ( IFileCatalog & fileCatalog)
explicit

Constructor.

◆ ~UserSession()

virtual pool::PersistencySvc::UserSession::~UserSession ( )
virtual

Destructor.

◆ UserSession() [2/2]

pool::PersistencySvc::UserSession::UserSession ( const UserSession & )
delete

Member Function Documentation

◆ commit()

virtual bool pool::PersistencySvc::UserSession::commit ( )
finaloverridevirtual

Commits the transaction.

Implements pool::ITransaction.

◆ commitAndHold()

virtual bool pool::PersistencySvc::UserSession::commitAndHold ( )
finaloverridevirtual

Commits and holds the transaction.

Implements pool::ITransaction.

◆ databaseHandle()

virtual std::unique_ptr< IDatabase > pool::PersistencySvc::UserSession::databaseHandle ( const std::string & dbName,
DatabaseSpecification::NameType dbNameType )
finaloverridevirtual

Creates and returns a new database handle object.

Implements pool::PersistencySvc::ISession.

◆ defaultConnectionPolicy()

virtual const DatabaseConnectionPolicy & pool::PersistencySvc::UserSession::defaultConnectionPolicy ( ) const
finaloverridevirtual

Retrieves the default connection policy.

Implements pool::PersistencySvc::ISession.

◆ disconnectAll()

virtual bool pool::PersistencySvc::UserSession::disconnectAll ( )
finaloverridevirtual

Explicitly disconnects all the databases.

If a transaction is active, then all the changes since the last commit are aborted.

Implements pool::PersistencySvc::ISession.

◆ fileCatalog()

virtual IFileCatalog & pool::PersistencySvc::UserSession::fileCatalog ( )
finaloverridevirtual

Returns the file catalog in use.

Implements pool::PersistencySvc::ISession.

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

◆ isActive()

virtual bool pool::PersistencySvc::UserSession::isActive ( ) const
inlinefinaloverridevirtual

Checks if the transaction is active.

Implements pool::ITransaction.

Definition at line 98 of file UserSession.h.

◆ microSessionManager()

MicroSessionManager & pool::PersistencySvc::UserSession::microSessionManager ( long technology)

Returns the technology given a technology type.

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

◆ operator=()

UserSession & pool::PersistencySvc::UserSession::operator= ( const UserSession & )
delete

◆ readObject()

virtual void * pool::PersistencySvc::UserSession::readObject ( const Token & token,
void * object = 0 )
overridevirtual

Retrieves an object from persistent store and return with type information The handle to the reflection class is necessary to later delete the object.

The Guid of the transient class is assumed to be the classID of the token

Parameters
token[IN] reference to the token for the object
object[IN] pointer to memory for the object (created if 0)
Returns
void* The data.

In case of failure zero is returned.

Implements pool::PersistencySvc::ISession.

◆ registerForWrite()

virtual Token * pool::PersistencySvc::UserSession::registerForWrite ( const Placement & place,
const void * object,
const RootType & type )
overridevirtual

registerForWrite registers an object for writing to the persistent medium higher level interactions with the framework are necessary.

Parameters
place[IN] the placement hint
object[IN] pointer to transient object which will be written
type[IN] reflection class description with the layout of transient object
Returns
Token* the token address of the persistent object. I case of failure 0 is returned.

Implements pool::PersistencySvc::ISession.

◆ registry()

DatabaseRegistry & pool::PersistencySvc::UserSession::registry ( )

◆ setDefaultConnectionPolicy()

virtual void pool::PersistencySvc::UserSession::setDefaultConnectionPolicy ( const DatabaseConnectionPolicy & policy)
finaloverridevirtual

Sets the default policy when databases are opened/connected.

Implements pool::PersistencySvc::ISession.

◆ setFileCatalog()

void pool::PersistencySvc::UserSession::setFileCatalog ( IFileCatalog & catalog)

Set the file catalog to be used.

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

◆ start()

virtual bool pool::PersistencySvc::UserSession::start ( ITransaction::Type type = READ)
finaloverridevirtual

Starts a new transaction. Returns the success of the operation.

Implements pool::ITransaction.

◆ technologySpecificAttributes() [1/2]

virtual const ITechnologySpecificAttributes & pool::PersistencySvc::UserSession::technologySpecificAttributes ( long technology) const
finaloverridevirtual

Returns the object holding the technology specific attributes for a given technology domain.

Implements pool::PersistencySvc::ISession.

◆ technologySpecificAttributes() [2/2]

virtual ITechnologySpecificAttributes & pool::PersistencySvc::UserSession::technologySpecificAttributes ( long technology)
finaloverridevirtual

◆ transaction() [1/2]

virtual const ITransaction & pool::PersistencySvc::UserSession::transaction ( ) const
inlinefinaloverridevirtual

Implements pool::PersistencySvc::ISession.

Definition at line 86 of file UserSession.h.

86{ return *this; }

◆ transaction() [2/2]

virtual ITransaction & pool::PersistencySvc::UserSession::transaction ( )
inlinefinaloverridevirtual

Returns the transaction interface.

Implements pool::PersistencySvc::ISession.

Definition at line 85 of file UserSession.h.

85{ return *this; }

◆ transactionType()

ITransaction::Type pool::PersistencySvc::UserSession::transactionType ( ) const
inline

Returns the transaction type.

Definition at line 104 of file UserSession.h.

104{ return transaction().type(); }
virtual Type type() const =0
Returns the transaction type.
virtual ITransaction & transaction() override final
Returns the transaction interface.
Definition UserSession.h:85

◆ type()

virtual ITransaction::Type pool::PersistencySvc::UserSession::type ( ) const
inlinefinaloverridevirtual

Returns the transaction type.

Implements pool::ITransaction.

Definition at line 101 of file UserSession.h.

101{ return m_transactionType; }

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_catalog

IFileCatalog* pool::PersistencySvc::UserSession::m_catalog
private

Definition at line 128 of file UserSession.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_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_policy

DatabaseConnectionPolicy* pool::PersistencySvc::UserSession::m_policy
private

Definition at line 127 of file UserSession.h.

◆ m_registry

DatabaseRegistry* pool::PersistencySvc::UserSession::m_registry
private

Definition at line 129 of file UserSession.h.

◆ m_technologies

std::map< long, std::unique_ptr<MicroSessionManager> > pool::PersistencySvc::UserSession::m_technologies
private

Definition at line 131 of file UserSession.h.

◆ m_transactionType

ITransaction::Type pool::PersistencySvc::UserSession::m_transactionType
private

Definition at line 130 of file UserSession.h.


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