| The Gaudi Framework v29r0 (ff2e7097)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
IoComponentMgr Class Reference

`#include <src/component/IoComponentMgr.h>`

Inheritance diagram for IoComponentMgr:
[legend]
Collaboration diagram for IoComponentMgr:
[legend]

## Classes
struct | IoComponentEntry

## Public Member Functions
| ~IoComponentMgr () override=default
| Destructor: More...
void | handle (const Incident &) override
bool | io_hasitem (IIoComponent *iocomponent) const override
| : check if the registry contains a given `IIoComponent` More...
bool | io_contains (IIoComponent *iocomponent, const std::string &fname) const override
| : check if the registry contains a given `IIoComponent` and that component had More...
StatusCode | io_register (IIoComponent *iocomponent) override
| : allow a `IIoComponent` to register itself with this manager so appropriate actions can be taken when e.g. More...
StatusCode | io_register (IIoComponent *iocomponent, IIoComponentMgr::IoMode::Type iomode, const std::string &fname, const std::string &pfn) override
| : allow a `IIoComponent` to register itself with this manager so appropriate actions can be taken when e.g. More...
StatusCode | io_update (IIoComponent *iocomponent, const std::string &old_fname, const std::string &new_fname) override
| : allow a `IIoComponent` to update the contents of the registry with a new file name More...
StatusCode | io_update (IIoComponent *iocomponent, const std::string &work_dir) override
| : allow a `IIoComponent` to update the contents of the registry with a new work directory More...
StatusCode | io_update_all (const std::string &work_dir) override
| : Update all `IIoComponents` with a new work directory More...
StatusCode | io_retrieve (IIoComponent *iocomponent, std::string &fname) override
| : retrieve the new filename for a given `IIoComponent` and More...
StatusCode | io_reinitialize () override
| : reinitialize the I/O subsystem. More...
StatusCode | io_finalize () override
| : finalize the I/O subsystem. More...
StatusCode | initialize () override
| Gaudi Service Implementation. More...
StatusCode | finalize () override
Public Member Functions inherited from extends< Service, IIoComponentMgr, IIncidentListener >
void * | i_cast (const InterfaceID &tid) const override
| Implementation of IInterface::i_cast. More...
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override
| Implementation of IInterface::queryInterface. More...
std::vector< std::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from Service
const std::string & | name () const override
| Retrieve name of the service. More...
StatusCode | configure () override
StatusCode | initialize () override
StatusCode | start () override
StatusCode | stop () override
StatusCode | finalize () override
StatusCode | terminate () override
Gaudi::StateMachine::State | FSMState () const override
Gaudi::StateMachine::State | targetFSMState () const override
StatusCode | reinitialize () override
StatusCode | restart () override
StatusCode | sysInitialize () override
| Initialize Service. More...
StatusCode | sysStart () override
| Initialize Service. More...
StatusCode | sysStop () override
| Initialize Service. More...
StatusCode | sysFinalize () override
| Finalize Service. More...
StatusCode | sysReinitialize () override
| Re-initialize the Service. More...
StatusCode | sysRestart () override
| Re-initialize the Service. More...
| Service (std::string name, ISvcLocator *svcloc)
| Standard Constructor. More...
SmartIF< ISvcLocator > & | serviceLocator () const override
| Retrieve pointer to service locator. More...
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job. More...
template<class T >
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const
template<typename IFace = IService>
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const
template<class T >
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist. More...
template<class T >
StatusCode | declareTool (ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
| Declare used tool. More...
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| PropertyHolder ()=default
| ~PropertyHolder () override=default
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop)
| Declare a property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none")
| Helper to wrap a regular data member and use it as a regular property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
| Declare a PropertyBase instance setting name and documentation. More...
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
| Declare a remote property. More...
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override
| set the property form another property More...
StatusCode | setProperty (const std::string &s) override
| set the property from the formatted string More...
StatusCode | setProperty (const std::string &n, const std::string &v) override
| set the property from name and the value More...
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override
| get the property More...
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override
| get the property by name More...
StatusCode | getProperty (const std::string &n, std::string &v) const override
| convert the property to the string More...
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override
| get all properties More...
bool | hasProperty (const std::string &name) const override
| Return true if we have a property with the given name. More...
| PropertyHolder (const PropertyHolder &)=delete
PropertyHolder & | operator= (const PropertyHolder &)=delete
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none")
| Specializations for various GaudiHandles. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none")
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none")
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service. More...
MsgStream & | msgStream () const
| Return an uninitialized MsgStream. More...
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts. More...
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS) More...
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL) More...
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING) More...
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO) More...
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG) More...
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE) More...
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO) More...
MSG::Level | msgLevel () const
| get the output level from the embedded MsgStream More...
MSG::Level | outputLevel () const __attribute__((deprecated))
| Backward compatibility function for getting the output level. More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
Public Member Functions inherited from extend_interfaces< Interfaces... >
| ~extend_interfaces () override=default
| Virtual destructor. More...

## Private Types
typedef std::map< std::string, IIoComponent * > | IoRegistry_t
typedef std::list< IIoComponent * > | IoStack_t
typedef std::multimap< IIoComponent *, IoComponentEntry > | IoDict_t
typedef IoDict_t::const_iterator | iodITR

## Private Member Functions
| IoComponentMgr ()=delete
| Default constructor: More...
bool | findComp (IIoComponent *, const std::string &, iodITR &) const
bool | findComp (IIoComponent *, std::pair< iodITR, iodITR > &) const
bool | findComp (const std::string &, std::pair< iodITR, iodITR > &) const
std::string | list () const

## Private Attributes
IoRegistry_t | m_ioregistry
| Registry of `IIoComponents`. More...
IoStack_t | m_iostack
| Stack of `IIoComponents` to properly handle order of registration. More...
IoDict_t | m_cdict
std::string | m_dict_location
| location of the python dictionary More...

## Additional Inherited Members
Public Types inherited from extends< Service, IIoComponentMgr, IIncidentListener >
using | base_class = extends
| Typedef to this class. More...
using | extend_interfaces_base = extend_interfaces< Interfaces... >
| Typedef to the base of this class. More...
Public Types inherited from Service
typedef Gaudi::PluginService::Factory< IService *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| Typedef used to refer to this class from derived classes, as in. More...
Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using | base_class = CommonMessaging
Public Types inherited from extend_interfaces< Interfaces... >
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
| take union of the ext_iids of all Interfaces... More...
Protected Member Functions inherited from Service
| ~Service () override
| Standard Destructor. More...
int | outputLevel () const
| get the `Service's` output level More...
Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
Gaudi::Details::PropertyBase * | property (const std::string &name) const
Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...
Protected Attributes inherited from Service
Gaudi::StateMachine::State | m_state = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::StateMachine::State | m_targetState = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::Property< int > | m_outputLevel {this, "OutputLevel", MSG::NIL, "output level"}
Gaudi::Property< bool > | m_auditInit {this, "AuditServices", false, "[[deprecated]] unused"}
Gaudi::Property< bool > | m_auditorInitialize {this, "AuditInitialize", false, "trigger auditor on initialize()"}
Gaudi::Property< bool > | m_auditorStart {this, "AuditStart", false, "trigger auditor on start()"}
Gaudi::Property< bool > | m_auditorStop {this, "AuditStop", false, "trigger auditor on stop()"}
Gaudi::Property< bool > | m_auditorFinalize {this, "AuditFinalize", false, "trigger auditor on finalize()"}
Gaudi::Property< bool > | m_auditorReinitialize {this, "AuditReinitialize", false, "trigger auditor on reinitialize()"}
Gaudi::Property< bool > | m_auditorRestart {this, "AuditRestart", false, "trigger auditor on restart()"}
SmartIF< IAuditorSvc > | m_pAuditorSvc
| Auditor Service. More...

## Detailed Description

Definition at line 28 of file IoComponentMgr.h.

## Member Typedef Documentation

typedef std::multimap<IIoComponent*, IoComponentEntry> IoComponentMgr::IoDict_t
| private

Definition at line 175 of file IoComponentMgr.h.

typedef IoDict_t::const_iterator IoComponentMgr::iodITR
| private

Definition at line 176 of file IoComponentMgr.h.

typedef std::map<std::string, IIoComponent*> IoComponentMgr::IoRegistry_t
| private

Definition at line 166 of file IoComponentMgr.h.

typedef std::list<IIoComponent*> IoComponentMgr::IoStack_t
| private

Definition at line 170 of file IoComponentMgr.h.

## Constructor & Destructor Documentation

IoComponentMgr::~IoComponentMgr | ( |  | ) |
| override default

Destructor:

IoComponentMgr::IoComponentMgr | ( |  | ) |
| private delete

Default constructor:

## Member Function Documentation

StatusCode IoComponentMgr::finalize | ( |  | ) |
| override

Definition at line 77 of file IoComponentMgr.cpp.

78 {
79 DEBMSG << "--> finalize()" << endmsg;
80
81 return StatusCode::SUCCESS;
82 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

bool IoComponentMgr::findComp | ( | IIoComponent * | c,
|  | const std::string & | f,
|  | iodITR & | itr
| ) |  | const
| private

Definition at line 404 of file IoComponentMgr.cpp.

405 {
406
407 pair<iodITR, iodITR> pit;
408 if ( !findComp( c, pit ) ) {
409 itr = pit.first;
410 return false;
411 }
412 return std::any_of( pit.first, pit.second, [&]( IoDict_t::const_reference i ) { return i.second.m_oldfname == f; } );
413 }
IoComponentMgr::findComp
bool findComp(IIoComponent *, const std::string &, iodITR &) const
Definition: IoComponentMgr.cpp:404
std::pair
std::any_of
T any_of(T...args)

bool IoComponentMgr::findComp | ( | IIoComponent * | c,
|  | std::pair< iodITR, iodITR > & | pit
| ) |  | const
| private

Definition at line 417 of file IoComponentMgr.cpp.

418 {
419
420 pit = m_cdict.equal_range( c );
421 return pit.first != pit.second;
422 }
std::multimap::equal_range
T equal_range(T...args)
IoComponentMgr::m_cdict
IoDict_t m_cdict
Definition: IoComponentMgr.h:178

bool IoComponentMgr::findComp | ( | const std::string & | c,
|  | std::pair< iodITR, iodITR > & | pit
| ) |  | const
| private

Definition at line 426 of file IoComponentMgr.cpp.

427 {
428
429 pit.first = m_cdict.end();
430 pit.second = m_cdict.end();
431
432 auto itr = m_ioregistry.find( c );
433 return ( itr != m_ioregistry.end() ) && findComp( itr->second, pit );
434 }
IoComponentMgr::m_ioregistry
IoRegistry_t m_ioregistry
Registry of IIoComponents.
Definition: IoComponentMgr.h:168
std::multimap::end
T end(T...args)
IoComponentMgr::findComp
bool findComp(IIoComponent *, const std::string &, iodITR &) const
Definition: IoComponentMgr.cpp:404
std::map::find
T find(T...args)
IoComponentMgr::m_cdict
IoDict_t m_cdict
Definition: IoComponentMgr.h:178

void IoComponentMgr::handle | ( | const Incident & | i | ) |
| override

Definition at line 453 of file IoComponentMgr.cpp.

454 {
455
456 pair<iodITR, iodITR> pit;
457
458 if ( i.type() == IncidentType::BeginInputFile ) {
459
460 const FileIncident* fi = dynamic_cast<const FileIncident*>( &i );
461 DEBMSG << "BeginInputFile: s: " << fi->source() << " t: " << fi->type() << " n: " << fi->fileName()
462 << " g: " << fi->fileGuid() << endmsg;
463
464 if ( findComp( fi->source(), pit ) ) {
465 DEBMSG << " found component: " << endmsg;
466 while ( pit.first != pit.second ) {
467 IIoComponent* c = pit.first->first;
468 IoComponentEntry e = pit.first->second;
469 DEBMSG << " c: " << c->name() << " " << e << endmsg;
470
471 ++pit.first;
472 }
473 } else {
474 DEBMSG << " could not find component \"" << fi->source() << "\"!" << endmsg;
475 }
476
477 } else if ( i.type() == IncidentType::BeginOutputFile ) {
478
479 const FileIncident* fi = dynamic_cast<const FileIncident*>( &i );
480 DEBMSG << "BeginOutputFile: s: " << fi->source() << " t: " << fi->type() << " n: " << fi->fileName()
481 << " g: " << fi->fileGuid() << endmsg;
482
483 if ( findComp( fi->source(), pit ) ) {
484 DEBMSG << " found component: " << endmsg;
485 while ( pit.first != pit.second ) {
486 IIoComponent* c = pit.first->first;
487 IoComponentEntry e = pit.first->second;
488 DEBMSG << " c: " << c->name() << " " << e << endmsg;
489
490 ++pit.first;
491 }
492 } else {
493 DEBMSG << " could not find component \"" << fi->source() << "\"!" << endmsg;
494 }
495 }
496 }
IIoComponent
Definition: IIoComponent.h:16
FileIncident
This class is the FileIncident.
Definition: FileIncident.h:17
gaudirun.c
c
Definition: gaudirun.py:407
Incident::type
const std::string & type() const
Access to the incident type.
Definition: Incident.h:41
Incident::source
const std::string & source() const
Access to the source of the incident.
Definition: Incident.h:47
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
IoComponentMgr::findComp
bool findComp(IIoComponent *, const std::string &, iodITR &) const
Definition: IoComponentMgr.cpp:404
std::pair
FileIncident::fileGuid
const std::string & fileGuid() const
Definition: FileIncident.h:62
FileIncident::fileName
const std::string & fileName() const
Definition: FileIncident.h:61
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.

StatusCode IoComponentMgr::initialize | ( |  | ) |
| override

Gaudi Service Implementation.

Definition at line 53 of file IoComponentMgr.cpp.

54 {
55 DEBMSG << "--> initialize()" << endmsg;
56
57 if ( Service::initialize().isFailure() ) {
58 error() << "Unable to initialize Service base class" << endmsg;
59 return StatusCode::FAILURE;
60 }
61
62 IIncidentSvc* p_incSvc( 0 );
63
64 if ( service( "IncidentSvc", p_incSvc, true ).isFailure() ) {
65 error() << "unable to get the IncidentSvc" << endmsg;
66 return StatusCode::FAILURE;
67 } else {
68 p_incSvc->addListener( this, IncidentType::BeginOutputFile, 100, true );
69 p_incSvc->addListener( this, IncidentType::BeginInputFile, 100, true );
70 }
71
72 return StatusCode::SUCCESS;
73 }
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:64
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
Service::service
StatusCode service(const std::string &name, const T *&psvc, bool createIf=true) const
Access a service by name, creating it if it doesn&#39;t already exist.
Definition: Service.h:85
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IIncidentSvc
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:23

bool IoComponentMgr::io_contains | ( | IIoComponent * | iocomponent,
|  | const std::string & | fname
| ) |  | const
| override

: check if the registry contains a given `IIoComponent` and that component had

Parameters

  <tt>fname</tt> | as a filename

Definition at line 104 of file IoComponentMgr.cpp.

105 {
106 DEBMSG << "--> io_contains()" << endmsg;
107 if ( 0 == iocomponent ) {
108 return false;
109 }
110 const std::string& ioname = iocomponent->name();
111
112 DEBMSG << "io_contains: c: " << ioname << " f: " << fname << endmsg;
113
114 pair<iodITR, iodITR> fit = m_cdict.equal_range( iocomponent );
115 if ( fit.first == fit.second ) {
116 return false;
117 } else {
118 iodITR it;
119 for ( it = fit.first; it != fit.second; ++it ) {
120 IoComponentEntry ioe = it->second;
121 DEBMSG << " " << ioe << endmsg;
122 if ( ioe.m_oldfname == "" ) {
123 error() << "IIoComponent " << ioname << " has empty old filename" << endmsg;
124 return false;
125 } else if ( ioe.m_oldfname == fname ) {
126 return true;
127 }
128 }
129 }
130
131 return false;
132 }
IoComponentMgr::iodITR
IoDict_t::const_iterator iodITR
Definition: IoComponentMgr.h:176
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
std::string
STL class.
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
std::pair
std::multimap::equal_range
T equal_range(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.
IoComponentMgr::m_cdict
IoDict_t m_cdict
Definition: IoComponentMgr.h:178

StatusCode IoComponentMgr::io_finalize | ( |  | ) |
| override

: finalize the I/O subsystem.

Hook to allow to e.g. give a chance to I/O subsystems to merge output files. Not sure how to do this correctly though...

Definition at line 380 of file IoComponentMgr.cpp.

381 {
382 ON_DEBUG
383 {
384 debug() << "--> io_finalize()" << endmsg;
385 debug() << "finalizing I/O subsystem..." << endmsg;
386 debug() << "Listing all monitored entries: " << std::endl;
387 debug() << list() << endmsg;
388 }
389
390 bool allgood = true;
391 for ( IoStack_t::iterator io = m_iostack.begin(), ioEnd = m_iostack.end(); io != ioEnd; ++io ) {
392 DEBMSG << " [" << ( *io )->name() << "]->io_finalize()..." << endmsg;
393 if ( !( *io )->io_finalize().isSuccess() ) {
394 allgood = false;
395 error() << "problem in [" << ( *io )->name() << "]->io_finalize() !" << endmsg;
396 }
397 }
398
399 return allgood ? StatusCode::SUCCESS : StatusCode::FAILURE;
400 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
std::endl
T endl(T...args)
std::list::end
T end(T...args)
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
IoComponentMgr::list
std::string list() const
Definition: IoComponentMgr.cpp:438
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
ON_DEBUG
#define ON_DEBUG
Definition: IoComponentMgr.cpp:21
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
std::list::begin
T begin(T...args)
IoComponentMgr::m_iostack
IoStack_t m_iostack
Stack of IIoComponents to properly handle order of registration.
Definition: IoComponentMgr.h:172
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

bool IoComponentMgr::io_hasitem | ( | IIoComponent * | iocomponent | ) | const
| override

: check if the registry contains a given `IIoComponent`

Definition at line 88 of file IoComponentMgr.cpp.

89 {
90 DEBMSG << "--> io_hasitem()" << endmsg;
91 if ( 0 == iocomponent ) {
92 return false;
93 }
94 const std::string& ioname = iocomponent->name();
95 IoRegistry_t::const_iterator io = m_ioregistry.find( ioname );
96 return io != m_ioregistry.end();
97 }
IoComponentMgr::m_ioregistry
IoRegistry_t m_ioregistry
Registry of IIoComponents.
Definition: IoComponentMgr.h:168
std::map::end
T end(T...args)
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
std::string
STL class.
std::map::find
T find(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.

StatusCode IoComponentMgr::io_register | ( | IIoComponent * | iocomponent | ) |
| override

: allow a `IIoComponent` to register itself with this manager so appropriate actions can be taken when e.g.

a `fork(2)` has been issued (this is usually handled by calling `IIoComponent::io_reinit` on every registered component)

Definition at line 142 of file IoComponentMgr.cpp.

143 {
144 if ( !iocomponent ) {
145 error() << "io_register (component) received a NULL pointer !" << endmsg;
146 return StatusCode::FAILURE;
147 }
148 const std::string& ioname = iocomponent->name();
149 DEBMSG << "--> io_register(" << ioname << ")" << endmsg;
150 auto itr = m_ioregistry.find( ioname );
151 if ( itr == m_ioregistry.end() ) {
152 DEBMSG << " registering IoComponent \"" << ioname << "\"" << endmsg;
153 iocomponent->addRef(); // ownership...
154 m_ioregistry[ioname] = iocomponent;
155 m_iostack.push_back( iocomponent );
156 } else {
157 info() << "IoComponent[" << iocomponent->name() << "] already registered @" << (void*)itr->second << endmsg;
158 }
159 return StatusCode::SUCCESS;
160 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:117
IoComponentMgr::m_ioregistry
IoRegistry_t m_ioregistry
Registry of IIoComponents.
Definition: IoComponentMgr.h:168
std::map::end
T end(T...args)
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
std::string
STL class.
std::list::push_back
T push_back(T...args)
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
std::map::find
T find(T...args)
IInterface::addRef
virtual unsigned long addRef()=0
Increment the reference count of Interface instance.
IoComponentMgr::m_iostack
IoStack_t m_iostack
Stack of IIoComponents to properly handle order of registration.
Definition: IoComponentMgr.h:172
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.

StatusCode IoComponentMgr::io_register | ( | IIoComponent * | iocomponent,
|  | IIoComponentMgr::IoMode::Type | iomode,
|  | const std::string & | fname,
|  | const std::string & | pfn
| ) |  |
| override

: allow a `IIoComponent` to register itself with this manager so appropriate actions can be taken when e.g.

a `fork(2)` has been issued (this is usually handled by calling `IIoComponent::io_reinit` on every registered component)

Definition at line 170 of file IoComponentMgr.cpp.

172 {
173 if ( 0 == iocomponent ) {
174 return StatusCode::FAILURE;
175 }
176 const std::string& ioname = iocomponent->name();
177
178 DEBMSG << "--> io_register(" << ioname << "," << ( ( iomode == IIoComponentMgr::IoMode::READ ) ? "R" : "W" ) << ","
179 << fname << ")" << endmsg;
180
181 if ( !io_hasitem( iocomponent ) ) {
182 if ( !io_register( iocomponent ).isSuccess() ) {
183 error() << "could not register component [" << iocomponent->name() << "] "
184 << "with the I/O component manager !" << endmsg;
185 return StatusCode::FAILURE;
186 }
187 }
188
189 pair<iodITR, iodITR> fit = m_cdict.equal_range( iocomponent );
190 if ( fit.first != fit.second ) {
191 for ( iodITR it = fit.first; it != fit.second; ++it ) {
192 IoComponentEntry ioe = it->second;
193 if ( ioe.m_oldfname == fname ) {
194 if ( ioe.m_iomode == iomode ) {
195 info() << "IoComponent " << ioname << " has already had file " << fname << " registered with i/o mode "
196 << iomode << endmsg;
197 return StatusCode::SUCCESS;
198 } else {
199 warning() << "IoComponent " << ioname << " has already had file " << fname
200 << " registered with a different i/o mode " << ioe.m_iomode << " - now trying " << iomode << endmsg;
201 }
202 }
203 }
204 }
205
206 // We need to take into account that boost::filesystem::absolute() does not
207 // work for files read from eos, i.e. starting with "root:"
208 std::string tmp_name = pfn.empty() ? fname : pfn;
209 bool from_eos = tmp_name.find( "root:" ) == 0;
210 IoComponentEntry ioc( fname, ( from_eos ? tmp_name : boost::filesystem::absolute( tmp_name ).string() ), iomode );
211 m_cdict.insert( pair<IIoComponent*, IoComponentEntry>( iocomponent, ioc ) );
212
213 return StatusCode::SUCCESS;
214 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
std::string::empty
T empty(T...args)
StatusCode::FAILURE
Definition: StatusCode.h:31
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:117
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
IoComponentMgr::iodITR
IoDict_t::const_iterator iodITR
Definition: IoComponentMgr.h:176
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
std::string
STL class.
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:114
IoComponentMgr::io_register
StatusCode io_register(IIoComponent *iocomponent) override
: allow a IIoComponent to register itself with this manager so appropriate actions can be taken when ...
Definition: IoComponentMgr.cpp:142
std::pair
std::multimap::insert
T insert(T...args)
std::string::find
T find(T...args)
IIoComponentMgr::IoMode::READ
Definition: IIoComponentMgr.h:32
std::multimap::equal_range
T equal_range(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.
IoComponentMgr::io_hasitem
bool io_hasitem(IIoComponent *iocomponent) const override
: check if the registry contains a given IIoComponent
Definition: IoComponentMgr.cpp:88
IoComponentMgr::m_cdict
IoDict_t m_cdict
Definition: IoComponentMgr.h:178

StatusCode IoComponentMgr::io_reinitialize | ( |  | ) |
| override

: reinitialize the I/O subsystem.

This effectively calls `IIoComponent::io_reinit` on all the registered `IIoComponent`.

Definition at line 261 of file IoComponentMgr.cpp.

262 {
263 ON_DEBUG
264 {
265 debug() << "--> io_reinitialize()" << endmsg;
266 debug() << "reinitializing I/O subsystem..." << endmsg;
267 debug() << "Listing all monitored entries: " << std::endl;
268 debug() << list() << endmsg;
269 }
270
271 bool allgood = true;
272 for ( auto& io : m_iostack ) {
273 DEBMSG << " [" << io->name() << "]->io_reinit()..." << endmsg;
274 if ( !io->io_reinit().isSuccess() ) {
275 allgood = false;
276 error() << "problem in [" << io->name() << "]->io_reinit() !" << endmsg;
277 }
278 // we are done with this guy... release it
279 io->release();
280 }
281
282 // we are done.
283 // FIXME: shall we allow for multiple io_reinitialize ?
284 // m_iostack.clear();
285 // m_ioregistry.clear();
286 // m_cdict.clear();
287
288 return allgood ? StatusCode::SUCCESS : StatusCode::FAILURE;
289 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
std::endl
T endl(T...args)
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
IoComponentMgr::list
std::string list() const
Definition: IoComponentMgr.cpp:438
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
ON_DEBUG
#define ON_DEBUG
Definition: IoComponentMgr.cpp:21
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
IoComponentMgr::m_iostack
IoStack_t m_iostack
Stack of IIoComponents to properly handle order of registration.
Definition: IoComponentMgr.h:172
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode IoComponentMgr::io_retrieve | ( | IIoComponent * | iocomponent,
|  | std::string & | fname
| ) |  |
| override

: retrieve the new filename for a given `IIoComponent` and

Parameters

  <tt>fname</tt> | filename
  <tt>oldfname</tt> | filename

Definition at line 221 of file IoComponentMgr.cpp.

222 {
223 if ( 0 == iocomponent ) {
224 return StatusCode::FAILURE;
225 }
226
227 std::string ofname = fname;
228 const std::string& ioname = iocomponent->name();
229
230 DEBMSG << "--> io_retrieve(" << ioname << "," << fname << ")" << endmsg;
231
232 iodITR it;
233 if ( !findComp( iocomponent, ofname, it ) ) {
234 DEBMSG << "could not find c: " << ioname << " old_f: " << ofname << endmsg;
235 return StatusCode::FAILURE;
236 } else {
237
238 IoDict_t::iterator it;
239 for ( it = m_cdict.equal_range( iocomponent ).first; it != m_cdict.equal_range( iocomponent ).second; ++it ) {
240
241 if ( it->second.m_oldfname == ofname ) {
242 DEBMSG << "retrieving new name for the component " << iocomponent->name() << " old name: " << ofname
243 << ", new name: " << it->second.m_newfname << endmsg;
244 fname = it->second.m_newfname;
245 return StatusCode::SUCCESS;
246 }
247 }
248 }
249
250 DEBMSG << "Unexpected error! Unable to find entry in the dictionary corresponding to old filename: " << ofname
251 << endmsg;
252 return StatusCode::FAILURE;
253 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
IoComponentMgr::iodITR
IoDict_t::const_iterator iodITR
Definition: IoComponentMgr.h:176
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
std::string
STL class.
IoComponentMgr::findComp
bool findComp(IIoComponent *, const std::string &, iodITR &) const
Definition: IoComponentMgr.cpp:404
std::multimap::equal_range
T equal_range(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.
IoComponentMgr::m_cdict
IoDict_t m_cdict
Definition: IoComponentMgr.h:178

StatusCode IoComponentMgr::io_update | ( | IIoComponent * | iocomponent,
|  | const std::string & | old_fname,
|  | const std::string & | new_fname
| ) |  |
| override

: allow a `IIoComponent` to update the contents of the registry with a new file name

Definition at line 293 of file IoComponentMgr.cpp.

294 {
295
296 DEBMSG << "--> io_update(" << ioc->name() << "," << old_fname << "," << new_fname << ")" << endmsg;
297
298 IoDict_t::iterator it;
299 for ( it = m_cdict.equal_range( ioc ).first; it != m_cdict.equal_range( ioc ).second; ++it ) {
300
301 if ( it->second.m_oldfname == old_fname ) {
302 DEBMSG << "updating " << ioc->name() << " f: " << old_fname << " -> " << new_fname << endmsg;
303 it->second.m_newfname = new_fname;
304 return StatusCode::SUCCESS;
305 }
306 }
307
308 return StatusCode::FAILURE;
309 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
std::multimap::equal_range
T equal_range(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IoComponentMgr::m_cdict
IoDict_t m_cdict
Definition: IoComponentMgr.h:178

StatusCode IoComponentMgr::io_update | ( | IIoComponent * | iocomponent,
|  | const std::string & | work_dir
| ) |  |
| override

: allow a `IIoComponent` to update the contents of the registry with a new work directory

Definition at line 313 of file IoComponentMgr.cpp.

314 {
315
316 DEBMSG << "--> io_update(" << ioc->name() << "," << work_dir << ")" << endmsg;
317
318 IoDict_t::iterator it;
319 for ( it = m_cdict.equal_range( ioc ).first; it != m_cdict.equal_range( ioc ).second; ++it ) {
320
321 switch ( it->second.m_iomode ) {
322 case IIoComponentMgr::IoMode::READ: {
323 it->second.m_newfname = it->second.m_oldabspath;
324 break;
325 }
326 case IIoComponentMgr::IoMode::WRITE: {
327 boost::filesystem::path oldPath( it->second.m_oldfname );
328 if ( oldPath.is_relative() && oldPath.filename() == oldPath.relative_path() ) {
329
330 // Only file name was provided for writing. This is the usual mode of operation
331 // ***
332 // NB. In such cases it would make sense to set newfname=oldfname, however this will break
333 // existing client codes, which assume that newfname contains "/"
334 // Thus we set newfname=workdir/oldfname
335 // ***
336
337 boost::filesystem::path newfname( work_dir );
338 newfname /= oldPath;
339 it->second.m_newfname = newfname.string();
340 } else {
341 // New name should be the old absolute path
342 it->second.m_newfname = it->second.m_oldabspath;
343 }
344
345 break;
346 }
347 default: {
348 // Don't know how to deal with either RW or INVALID
349 error() << "Unable to update IoComponent for the mode " << it->second.m_iomode << endmsg;
350 return StatusCode::FAILURE;
351 }
352 }
353
354 } // for
355
356 return StatusCode::SUCCESS;
357 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:895
StatusCode::FAILURE
Definition: StatusCode.h:31
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
IIoComponentMgr::IoMode::WRITE
Definition: IIoComponentMgr.h:32
IIoComponentMgr::IoMode::READ
Definition: IIoComponentMgr.h:32
std::multimap::equal_range
T equal_range(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IoComponentMgr::m_cdict
IoDict_t m_cdict
Definition: IoComponentMgr.h:178

StatusCode IoComponentMgr::io_update_all | ( | const std::string & | work_dir | ) |
| override

: Update all `IIoComponents` with a new work directory

Definition at line 361 of file IoComponentMgr.cpp.

362 {
363 DEBMSG << "-->io_update_all for the directory " << work_dir << endmsg;
364 bool allgood = true;
365 for ( IoStack_t::iterator io = m_iostack.begin(), ioEnd = m_iostack.end(); io != ioEnd; ++io ) {
366 if ( !io_update( *io, work_dir ).isSuccess() ) {
367 allgood = false;
368 error() << "problem in [" << ( *io )->name() << "]->io_update() !" << endmsg;
369 }
370 }
371 return allgood ? StatusCode::SUCCESS : StatusCode::FAILURE;
372 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
std::list::end
T end(T...args)
DEBMSG
#define DEBMSG
Definition: IoComponentMgr.cpp:24
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
IoComponentMgr::io_update
StatusCode io_update(IIoComponent *iocomponent, const std::string &old_fname, const std::string &new_fname) override
: allow a IIoComponent to update the contents of the registry with a new file name ...
Definition: IoComponentMgr.cpp:293
std::list::begin
T begin(T...args)
IoComponentMgr::m_iostack
IoStack_t m_iostack
Stack of IIoComponents to properly handle order of registration.
Definition: IoComponentMgr.h:172
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

std::string IoComponentMgr::list | ( |  | ) | const
| private

Definition at line 438 of file IoComponentMgr.cpp.

439 {
440
441 ostringstream ost;
442
443 ost << "Listing all IoComponents (" << m_cdict.size() << "): " << endl;
444 for ( const auto& i : m_cdict ) {
445 ost << " " << i.first->name() << " " << i.second << endl;
446 }
447
448 return ost.str();
449 }
std::endl
T endl(T...args)
std::ostringstream
STL class.
std::ostringstream::str
T str(T...args)
std::multimap::size
T size(T...args)
IoComponentMgr::m_cdict
IoDict_t m_cdict
Definition: IoComponentMgr.h:178

## Member Data Documentation

IoDict_t IoComponentMgr::m_cdict
| private

Definition at line 178 of file IoComponentMgr.h.

std::string IoComponentMgr::m_dict_location
| private

location of the python dictionary

Definition at line 181 of file IoComponentMgr.h.

IoRegistry_t IoComponentMgr::m_ioregistry
| private

Registry of `IIoComponents`.

Definition at line 168 of file IoComponentMgr.h.

IoStack_t IoComponentMgr::m_iostack
| private

Stack of `IIoComponents` to properly handle order of registration.

Definition at line 172 of file IoComponentMgr.h.

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

- GaudiMP/src/component/IoComponentMgr.h
- GaudiMP/src/component/IoComponentMgr.cpp