| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | Protected Attributes | List of all members
HiveWhiteBoard Class Reference

Data service base class. More...

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

## Public Member Functions
| ~HiveWhiteBoard () override
| Standard Destructor. More...
size_t | freeSlots () override
| Get free slots number. More...
CLID | rootCLID () const override
| IDataManagerSvc: Accessor for root event CLID. More...
const std::string & | rootName () const override
| Name for root Event. More...
StatusCode | registerAddress (std::string_view path, IOpaqueAddress *pAddr) override
| IDataManagerSvc: Register object address with the data store. More...
StatusCode | registerAddress (IRegistry *parent, std::string_view path, IOpaqueAddress *pAdd) override
| IDataManagerSvc: Register object address with the data store. More...
StatusCode | unregisterAddress (std::string_view path) override
| IDataManagerSvc: Unregister object address from the data store. More...
StatusCode | unregisterAddress (IRegistry *pParent, std::string_view path) override
| IDataManagerSvc: Unregister object address from the data store. More...
StatusCode | objectLeaves (const DataObject *pObject, std::vector< IRegistry * > &leaves) override
| Explore the object store: retrieve all leaves attached to the object. More...
StatusCode | objectLeaves (const IRegistry *pObject, std::vector< IRegistry * > &leaves) override
| Explore the object store: retrieve all leaves attached to the object. More...
StatusCode | objectParent (const DataObject *pObject, IRegistry *&refpParent) override
| IDataManagerSvc: Explore the object store: retrieve the object's parent. More...
StatusCode | objectParent (const IRegistry *pObject, IRegistry *&refpParent) override
| IDataManagerSvc: Explore the object store: retrieve the object's parent. More...
StatusCode | clearSubTree (std::string_view path) override
| Remove all data objects below the sub tree identified. More...
StatusCode | clearSubTree (DataObject *pObject) override
| Remove all data objects below the sub tree identified. More...
StatusCode | clearStore () override
| IDataManagerSvc: Remove all data objects in the data store. More...
StatusCode | traverseSubTree (std::string_view path, IDataStoreAgent *pAgent) override
| Analyze by traversing all data objects below the sub tree. More...
StatusCode | traverseSubTree (DataObject *pObject, IDataStoreAgent *pAgent) override
| IDataManagerSvc: Analyze by traversing all data objects below the sub tree. More...
StatusCode | traverseTree (IDataStoreAgent *pAgent) override
| IDataManagerSvc: Analyze by traversing all data objects in the data store. More...
StatusCode | setRoot (std::string path, DataObject *pObj) override
| Initialize data store for new event by giving new event path and root object. More...
StatusCode | setRoot (std::string path, IOpaqueAddress *pAddr) override
| Initialize data store for new event by giving new event path and address of root object. More...
StatusCode | setDataLoader (IConversionSvc *pDataLoader, IDataProviderSvc *=nullptr) override
| IDataManagerSvc: Pass a default data loader to the service. More...
StatusCode | addPreLoadItem (const DataStoreItem &item) override
| Add an item to the preload list. More...
StatusCode | removePreLoadItem (const DataStoreItem &item) override
| Remove an item from the preload list. More...
StatusCode | resetPreLoad () override
| Clear the preload list. More...
StatusCode | preLoad () override
| load all preload items of the list More...
StatusCode | registerObject (std::string_view parent, std::string_view obj, DataObject *pObj) override
| Register object with the data store. More...
StatusCode | registerObject (DataObject *parent, std::string_view obj, DataObject *pObj) override
| Register object with the data store. More...
StatusCode | unregisterObject (std::string_view path) override
| Unregister object from the data store. More...
StatusCode | unregisterObject (DataObject *pObj) override
| Unregister object from the data store. More...
StatusCode | unregisterObject (DataObject *pObj, std::string_view path) override
| Unregister object from the data store. More...
StatusCode | retrieveObject (IRegistry *parent, std::string_view path, DataObject *&pObj) override
| Retrieve object from data store. More...
StatusCode | findObject (std::string_view path, DataObject *&pObj) override
| Find object identified by its full path in the data store. More...
StatusCode | findObject (IRegistry *parent, std::string_view path, DataObject *&pObj) override
| Find object identified by its full path in the data store. More...
StatusCode | linkObject (IRegistry *from, std::string_view objPath, DataObject *to) override
| Add a link to another object. More...
StatusCode | linkObject (std::string_view fullPath, DataObject *to) override
| Add a link to another object. More...
StatusCode | unlinkObject (IRegistry *from, std::string_view objPath) override
| Remove a link to another object. More...
StatusCode | unlinkObject (DataObject *from, std::string_view objPath) override
| Remove a link to another object. More...
StatusCode | unlinkObject (std::string_view path) override
| Remove a link to another object. More...
StatusCode | updateObject (IRegistry *pDirectory) override
| Update object identified by its directory entry. More...
StatusCode | updateObject (DataObject *pObj) override
| Update object. More...
StatusCode | clearStore (size_t partition) override
| Remove all data objects in one 'slot' of the data store. More...
StatusCode | selectStore (size_t partition) override
| Activate a partition object. The identifies the partition uniquely. More...
StatusCode | setNumberOfStores (size_t slots) override
| Set the number of event slots (copies of DataSvc objects). More...
size_t | getNumberOfStores () const override
| Get the number of event slots (copies of DataSvc objects). More...
bool | exists (const DataObjID &id) override
| check if a data object exists in the current store More...
size_t | allocateStore (int evtnumber) override
| Allocate a store partition for a given event number. More...
StatusCode | freeStore (size_t partition) override
| Free a store partition. More...
size_t | getPartitionNumber (int eventnumber) const override
| Get the partition number corresponding to a given event. More...
StatusCode | attachServices ()
StatusCode | detachServices ()
StatusCode | initialize () override
| Service initialisation. More...
StatusCode | reinitialize () override
| Service initialisation. More...
StatusCode | finalize () override
| Service initialisation. More...
Public Member Functions inherited from extends< Service, IDataProviderSvc, IDataManagerSvc, IHiveWhiteBoard >
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...
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
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, 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
Public Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level | msgLevel () const
| get the cached level (originally extracted from the embedded MsgStream) More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
MSG::Level | outputLevel () const
| Backward compatibility function for getting the output level. More...
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
const 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...

## Protected Attributes
Gaudi::Property< CLID > | m_rootCLID {this, "RootCLID", 110 , "CLID of root entry"}
Gaudi::Property< std::string > | m_rootName {this, "RootName", "/Event", "name of root entry"}
Gaudi::Property< std::string > | m_loader {this, "DataLoader", "EventPersistencySvc", ""}
Gaudi::Property< size_t > | m_slots {this, "EventSlots", 1, "number of event slots"}
Gaudi::Property< bool > | m_forceLeaves {this, "ForceLeaves", false, "force creation of default leaves on registerObject"}
Gaudi::Property< bool > | m_enableFaultHdlr
IConversionSvc * | m_dataLoader = nullptr
| Pointer to data loader service. More...
IAddressCreator * | m_addrCreator = nullptr
| Reference to address creator. More...
std::vector< Synced< Partition > > | m_partitions
| Datastore partitions. More...
tbb::concurrent_queue< size_t > | m_freeSlots
| fifo queue of free slots 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, " 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...

## Additional Inherited Members
Public Types inherited from extends< Service, IDataProviderSvc, IDataManagerSvc, IHiveWhiteBoard >
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
using | Factory = Gaudi::PluginService::Factory< IService *(const std::string &, ISvcLocator *)>
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 > >
MSG::Level | setUpMessaging () const
| Set up local caches. More...
MSG::Level | resetMessaging ()
| Reinitialize internal states. More...
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...

## Detailed Description

Data service base class.

A data service manages the transient data stores and implements the IDataProviderSvc, the IDataManagerSvc and the IPartitionControl interfaces.

Author
  Markus Frank
  Sebastien Ponce
  Pere Mato

Version
  1.0

Definition at line 119 of file HiveWhiteBoard.cpp.

## Constructor & Destructor Documentation

## ◆ ~HiveWhiteBoard()

HiveWhiteBoard::~HiveWhiteBoard | ( |  | ) |
| inline override

Standard Destructor.

Definition at line 143 of file HiveWhiteBoard.cpp.

143 {
144 setDataLoader( 0 ).ignore();
145 resetPreLoad().ignore();
146 clearStore().ignore();
147 for_( m_partitions, []( Partition& p ) {
148 p.dataManager->release();
149 p.dataProvider->release();
150 } );
151 m_partitions.clear();
152 }
HiveWhiteBoard::resetPreLoad
StatusCode resetPreLoad() override
Clear the preload list.
Definition: HiveWhiteBoard.cpp:257
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134
HiveWhiteBoard::clearStore
StatusCode clearStore() override
IDataManagerSvc: Remove all data objects in the data store.
Definition: HiveWhiteBoard.cpp:203
std::vector::clear
T clear(T... args)
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
HiveWhiteBoard::setDataLoader
StatusCode setDataLoader(IConversionSvc *pDataLoader, IDataProviderSvc *=nullptr) override
IDataManagerSvc: Pass a default data loader to the service.
Definition: HiveWhiteBoard.cpp:238

## Member Function Documentation

## ◆ addPreLoadItem()

StatusCode HiveWhiteBoard::addPreLoadItem | ( | const DataStoreItem & | item | ) |
| inline override

Add an item to the preload list.

Definition at line 247 of file HiveWhiteBoard.cpp.

247 {
248 for_( m_partitions, [&]( Partition& p ) { p.dataProvider->addPreLoadItem( item ); } );
249 return StatusCode::SUCCESS;
250 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134

## ◆ allocateStore()

size_t HiveWhiteBoard::allocateStore | ( | int | evtnumber | ) |
| inline override

Allocate a store partition for a given event number.

Definition at line 362 of file HiveWhiteBoard.cpp.

362 {
363 // take next free slot in the list
364 size_t slot = std::string::npos;
365 if ( m_freeSlots.try_pop( slot ) ) {
366 assert( slot != std::string::npos );
367 assert( slot < m_partitions.size() );
368 m_partitions[slot].with_lock( [evtnumber]( Partition& p ) {
369 assert( p.eventNumber == -1 ); // or whatever value represents 'free'
370 p.eventNumber = evtnumber;
371 } );
372 }
373 return slot;
374 }
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134
std::vector::size
T size(T... args)
HiveWhiteBoard::m_freeSlots
tbb::concurrent_queue< size_t > m_freeSlots
fifo queue of free slots
Definition: HiveWhiteBoard.cpp:136

## ◆ attachServices()

StatusCode HiveWhiteBoard::attachServices | ( |  | ) |
| inline

Definition at line 392 of file HiveWhiteBoard.cpp.

392 {
393 StatusCode sc = service( m_loader, m_addrCreator, true );
394 if ( !sc.isSuccess() ) {
395 error() << "Failed to retrieve data loader "
396 << "\"" << m_loader << "\"" << endmsg;
397 return sc;
398 }
399 IConversionSvc* dataLoader = nullptr;
400 sc = service( m_loader, dataLoader, true );
401 if ( !sc.isSuccess() ) {
402 error() << MSG::ERROR << "Failed to retrieve data loader "
403 << "\"" << m_loader << "\"" << endmsg;
404 return sc;
405 }
406 sc = setDataLoader( dataLoader );
407 dataLoader->release();
408 if ( !sc.isSuccess() ) {
409 error() << MSG::ERROR << "Failed to set data loader "
410 << "\"" << m_loader << "\"" << endmsg;
411 return sc;
412 }
413 return sc;
414 }
IConversionSvc
Definition: IConversionSvc.h:37
HiveWhiteBoard::m_loader
Gaudi::Property< std::string > m_loader
Definition: HiveWhiteBoard.cpp:123
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
IInterface::release
virtual unsigned long release()=0
Release Interface instance.
HiveWhiteBoard::m_addrCreator
IAddressCreator * m_addrCreator
Reference to address creator.
Definition: HiveWhiteBoard.cpp:132
HiveWhiteBoard::setDataLoader
StatusCode setDataLoader(IConversionSvc *pDataLoader, IDataProviderSvc *=nullptr) override
IDataManagerSvc: Pass a default data loader to the service.
Definition: HiveWhiteBoard.cpp:238
MSG::ERROR
Definition: IMessageSvc.h:15
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't already exist.
Definition: Service.h:83
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

## ◆ clearStore() [1/2]

StatusCode HiveWhiteBoard::clearStore | ( |  | ) |
| inline override

IDataManagerSvc: Remove all data objects in the data store.

Definition at line 203 of file HiveWhiteBoard.cpp.

203 {
204 for_( m_partitions, []( Partition& p ) { p.dataManager->clearStore().ignore(); } );
205 return StatusCode::SUCCESS;
206 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134

## ◆ clearStore() [2/2]

StatusCode HiveWhiteBoard::clearStore | ( | size_t | partition | ) |
| inline override

Remove all data objects in one 'slot' of the data store.

Definition at line 331 of file HiveWhiteBoard.cpp.

331 {
332 return m_partitions[partition].with_lock( []( Partition& p ) { return p.dataManager->clearStore(); } );
333 }
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134
std::partition
T partition(T... args)

## ◆ clearSubTree() [1/2]

StatusCode HiveWhiteBoard::clearSubTree | ( | std::string_view | path | ) |
| inline override

Remove all data objects below the sub tree identified.

Definition at line 195 of file HiveWhiteBoard.cpp.

195 {
196 return fwd( [&]( IDataManagerSvc& p ) { return p.clearSubTree( path ); } );
197 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataManagerSvc::clearSubTree
virtual StatusCode clearSubTree(std::string_view sub_path)=0
Remove all data objects below the sub tree identified by its full path name.

## ◆ clearSubTree() [2/2]

StatusCode HiveWhiteBoard::clearSubTree | ( | DataObject * | pObject | ) |
| inline override

Remove all data objects below the sub tree identified.

Definition at line 199 of file HiveWhiteBoard.cpp.

199 {
200 return fwd( [&]( IDataManagerSvc& p ) { return p.clearSubTree( pObject ); } );
201 }
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataManagerSvc::clearSubTree
virtual StatusCode clearSubTree(std::string_view sub_path)=0
Remove all data objects below the sub tree identified by its full path name.

## ◆ detachServices()

StatusCode HiveWhiteBoard::detachServices | ( |  | ) |
| inline

Definition at line 416 of file HiveWhiteBoard.cpp.

416 {
417 if ( m_addrCreator ) m_addrCreator->release();
418 if ( m_dataLoader ) m_dataLoader->release();
419 m_addrCreator = nullptr;
420 m_dataLoader = nullptr;
421 return StatusCode::SUCCESS;
422 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
IInterface::release
virtual unsigned long release()=0
Release Interface instance.
HiveWhiteBoard::m_addrCreator
IAddressCreator * m_addrCreator
Reference to address creator.
Definition: HiveWhiteBoard.cpp:132
HiveWhiteBoard::m_dataLoader
IConversionSvc * m_dataLoader
Pointer to data loader service.
Definition: HiveWhiteBoard.cpp:130

## ◆ exists()

bool HiveWhiteBoard::exists | ( | const DataObjID & | id | ) |
| inline override

check if a data object exists in the current store

Definition at line 356 of file HiveWhiteBoard.cpp.

356 {
357 DataObject* pObject{nullptr};
358 return findObject( id.fullKey(), pObject ).isSuccess();
359 }
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
HiveWhiteBoard::findObject
StatusCode findObject(std::string_view path, DataObject *&pObj) override
Find object identified by its full path in the data store.
Definition: HiveWhiteBoard.cpp:290
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30

## ◆ finalize()

StatusCode HiveWhiteBoard::finalize | ( |  | ) |
| inline override

Service initialisation.

Definition at line 488 of file HiveWhiteBoard.cpp.

488 {
489 setDataLoader( 0 ).ignore();
490 clearStore().ignore();
491 return Service::finalize();
492 }
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:164
HiveWhiteBoard::clearStore
StatusCode clearStore() override
IDataManagerSvc: Remove all data objects in the data store.
Definition: HiveWhiteBoard.cpp:203
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
HiveWhiteBoard::setDataLoader
StatusCode setDataLoader(IConversionSvc *pDataLoader, IDataProviderSvc *=nullptr) override
IDataManagerSvc: Pass a default data loader to the service.
Definition: HiveWhiteBoard.cpp:238

## ◆ findObject() [1/2]

StatusCode HiveWhiteBoard::findObject | ( | std::string_view | path,
|  | DataObject *& | pObj
| ) |  |
| inline override

Find object identified by its full path in the data store.

Definition at line 290 of file HiveWhiteBoard.cpp.

290 {
291 return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( path, pObj ); } );
292 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::retrieveObject
virtual StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.

## ◆ findObject() [2/2]

StatusCode HiveWhiteBoard::findObject | ( | IRegistry * | parent,
|  | std::string_view | path,
|  | DataObject *& | pObj
| ) |  |
| inline override

Find object identified by its full path in the data store.

Definition at line 294 of file HiveWhiteBoard.cpp.

294 {
295 return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, path, pObj ); } );
296 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::retrieveObject
virtual StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.

## ◆ freeSlots()

size_t HiveWhiteBoard::freeSlots | ( |  | ) |
| inline override

Get free slots number.

Definition at line 155 of file HiveWhiteBoard.cpp.

155 { return m_freeSlots.unsafe_size(); }
HiveWhiteBoard::m_freeSlots
tbb::concurrent_queue< size_t > m_freeSlots
fifo queue of free slots
Definition: HiveWhiteBoard.cpp:136

## ◆ freeStore()

StatusCode HiveWhiteBoard::freeStore | ( | size_t | partition | ) |
| inline override

Free a store partition.

Definition at line 377 of file HiveWhiteBoard.cpp.

377 {
378 assert( partition < m_partitions.size() );
379 auto prev = m_partitions[partition].with_lock( []( Partition& p ) { return std::exchange( p.eventNumber, -1 ); } );
380 if ( UNLIKELY( prev == -1 ) ) return StatusCode::FAILURE; // double free -- should never happen!
381 m_freeSlots.push( partition );
382 return StatusCode::SUCCESS;
383 }
UNLIKELY
#define UNLIKELY(x)
Definition: Kernel.h:96
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134
std::partition
T partition(T... args)
std::prev
T prev(T... args)
std::vector::size
T size(T... args)
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
HiveWhiteBoard::m_freeSlots
tbb::concurrent_queue< size_t > m_freeSlots
fifo queue of free slots
Definition: HiveWhiteBoard.cpp:136

## ◆ getNumberOfStores()

size_t HiveWhiteBoard::getNumberOfStores | ( |  | ) | const
| inline override

Get the number of event slots (copies of DataSvc objects).

Definition at line 353 of file HiveWhiteBoard.cpp.

353 { return m_slots; }
HiveWhiteBoard::m_slots
Gaudi::Property< size_t > m_slots
Definition: HiveWhiteBoard.cpp:124

## ◆ getPartitionNumber()

size_t HiveWhiteBoard::getPartitionNumber | ( | int | eventnumber | ) | const
| inline override

Get the partition number corresponding to a given event.

Definition at line 386 of file HiveWhiteBoard.cpp.

386 {
387 auto i = std::find_if( begin( m_partitions ), end( m_partitions ),
388 with_lock( [eventnumber]( const Partition& p ) { return p.eventNumber == eventnumber; } ) );
389 return i != end( m_partitions ) ? std::distance( begin( m_partitions ), i ) : std::string::npos;
390 }
std::distance
T distance(T... args)
std
STL namespace.
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134
IOTest.end
def end
Definition: IOTest.py:112
std::find_if
T find_if(T... args)
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:120

## ◆ initialize()

StatusCode HiveWhiteBoard::initialize | ( |  | ) |
| inline override

Service initialisation.

Definition at line 429 of file HiveWhiteBoard.cpp.

429 {
430 StatusCode sc = Service::initialize();
431 if ( !sc.isSuccess() ) {
432 error() << "Unable to initialize base class" << endmsg;
433 return sc;
434 }
435 if ( m_slots < (size_t)1 ) {
436 error() << "Invalid number of slots (" << m_slots << ")" << endmsg;
437 return StatusCode::FAILURE;
438 }
439
440 if ( !setNumberOfStores( m_slots ).isSuccess() ) {
441 error() << "Cannot set number of slots" << endmsg;
442 return StatusCode::FAILURE;
443 }
444
445 m_partitions = std::vector<Synced<Partition>>( m_slots );
446 for ( size_t i = 0; i < m_slots; i++ ) {
447 DataSvc* svc = new DataSvc( name() + "_" + std::to_string( i ), serviceLocator() );
448 // Percolate properties
449 svc->setProperty( m_rootCLID ).ignore();
450 svc->setProperty( m_rootName ).ignore();
451 svc->setProperty( m_forceLeaves ).ignore();
452 svc->setProperty( m_enableFaultHdlr ).ignore();
453 // make sure that CommonMessaging is initialized
454 svc->setProperty( m_outputLevel ).ignore();
455
456 sc = svc->initialize();
457 if ( !sc.isSuccess() ) {
458 error() << "Failed to instantiate DataSvc as store partition" << endmsg;
459 return sc;
460 }
461 m_partitions[i].with_lock( [&]( Partition& p ) {
462 p.dataProvider = svc;
463 p.dataManager = svc;
464 } );
465 m_freeSlots.push( i );
466 }
467 selectStore( 0 ).ignore();
468 return attachServices();
469 }
Service::m_outputLevel
Gaudi::Property< int > m_outputLevel
Definition: Service.h:176
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:60
HiveWhiteBoard::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: HiveWhiteBoard.cpp:122
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:277
HiveWhiteBoard::m_enableFaultHdlr
Gaudi::Property< bool > m_enableFaultHdlr
Definition: HiveWhiteBoard.cpp:126
PropertyHolder::setProperty
StatusCode setProperty(const Gaudi::Details::PropertyBase &p) override
set the property form another property
Definition: PropertyHolder.h:145
std::to_string
T to_string(T... args)
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134
HiveWhiteBoard::selectStore
StatusCode selectStore(size_t partition) override
Activate a partition object. The identifies the partition uniquely.
Definition: HiveWhiteBoard.cpp:336
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
HiveWhiteBoard::m_rootCLID
Gaudi::Property< CLID > m_rootCLID
Definition: HiveWhiteBoard.cpp:121
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
HiveWhiteBoard::m_slots
Gaudi::Property< size_t > m_slots
Definition: HiveWhiteBoard.cpp:124
HiveWhiteBoard::attachServices
StatusCode attachServices()
Definition: HiveWhiteBoard.cpp:392
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
std::vector
STL class.
HiveWhiteBoard::m_forceLeaves
Gaudi::Property< bool > m_forceLeaves
Definition: HiveWhiteBoard.cpp:125
DataSvc::initialize
StatusCode initialize() override
Service initialization.
Definition: DataSvc.cpp:812
DataSvc
Data service base class.
Definition: DataSvc.h:42
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
HiveWhiteBoard::m_freeSlots
tbb::concurrent_queue< size_t > m_freeSlots
fifo queue of free slots
Definition: HiveWhiteBoard.cpp:136
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
HiveWhiteBoard::setNumberOfStores
StatusCode setNumberOfStores(size_t slots) override
Set the number of event slots (copies of DataSvc objects).
Definition: HiveWhiteBoard.cpp:342

## ◆ linkObject() [1/2]

StatusCode HiveWhiteBoard::linkObject | ( | IRegistry * | from,
|  | std::string_view | objPath,
|  | DataObject * | to
| ) |  |
| inline override

Add a link to another object.

Definition at line 298 of file HiveWhiteBoard.cpp.

298 {
299 return fwd( [&]( IDataProviderSvc& p ) { return p.linkObject( from, objPath, to ); } );
300 }
IDataProviderSvc::linkObject
virtual StatusCode linkObject(IRegistry *from, std::string_view objPath, DataObject *toObj)=0
Add a link to another object.
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43

## ◆ linkObject() [2/2]

StatusCode HiveWhiteBoard::linkObject | ( | std::string_view | fullPath,
|  | DataObject * | to
| ) |  |
| inline override

Add a link to another object.

Definition at line 302 of file HiveWhiteBoard.cpp.

302 {
303 return fwd( [&]( IDataProviderSvc& p ) { return p.linkObject( fullPath, to ); } );
304 }
IDataProviderSvc::linkObject
virtual StatusCode linkObject(IRegistry *from, std::string_view objPath, DataObject *toObj)=0
Add a link to another object.
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43

## ◆ objectLeaves() [1/2]

StatusCode HiveWhiteBoard::objectLeaves | ( | const DataObject * | pObject,
|  | std::vector< IRegistry * > & | leaves
| ) |  |
| inline override

Explore the object store: retrieve all leaves attached to the object.

Definition at line 179 of file HiveWhiteBoard.cpp.

179 {
180 return fwd( [&]( IDataManagerSvc& p ) { return p.objectLeaves( pObject, leaves ); } );
181 }
IDataManagerSvc::objectLeaves
virtual StatusCode objectLeaves(const DataObject *pObject, std::vector< IRegistry * > &refLeaves)=0
Explore the object store: retrieve all leaves attached to the object The object is identified by its ...
IDataManagerSvc
Definition: IDataManagerSvc.h:45

## ◆ objectLeaves() [2/2]

StatusCode HiveWhiteBoard::objectLeaves | ( | const IRegistry * | pObject,
|  | std::vector< IRegistry * > & | leaves
| ) |  |
| inline override

Explore the object store: retrieve all leaves attached to the object.

Definition at line 183 of file HiveWhiteBoard.cpp.

183 {
184 return fwd( [&]( IDataManagerSvc& p ) { return p.objectLeaves( pObject, leaves ); } );
185 }
IDataManagerSvc::objectLeaves
virtual StatusCode objectLeaves(const DataObject *pObject, std::vector< IRegistry * > &refLeaves)=0
Explore the object store: retrieve all leaves attached to the object The object is identified by its ...
IDataManagerSvc
Definition: IDataManagerSvc.h:45

## ◆ objectParent() [1/2]

StatusCode HiveWhiteBoard::objectParent | ( | const DataObject * | pObject,
|  | IRegistry *& | refpParent
| ) |  |
| inline override

IDataManagerSvc: Explore the object store: retrieve the object's parent.

Definition at line 187 of file HiveWhiteBoard.cpp.

187 {
188 return fwd( [&]( IDataManagerSvc& p ) { return p.objectParent( pObject, refpParent ); } );
189 }
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataManagerSvc::objectParent
virtual StatusCode objectParent(const DataObject *pObject, IRegistry *&refpParent)=0
IDataManagerSvc: Explore the object store: retrieve the object's parent.

## ◆ objectParent() [2/2]

StatusCode HiveWhiteBoard::objectParent | ( | const IRegistry * | pObject,
|  | IRegistry *& | refpParent
| ) |  |
| inline override

IDataManagerSvc: Explore the object store: retrieve the object's parent.

Definition at line 191 of file HiveWhiteBoard.cpp.

191 {
192 return fwd( [&]( IDataManagerSvc& p ) { return p.objectParent( pObject, refpParent ); } );
193 }
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataManagerSvc::objectParent
virtual StatusCode objectParent(const DataObject *pObject, IRegistry *&refpParent)=0
IDataManagerSvc: Explore the object store: retrieve the object's parent.

## ◆ preLoad()

StatusCode HiveWhiteBoard::preLoad | ( |  | ) |
| inline override

load all preload items of the list

Definition at line 262 of file HiveWhiteBoard.cpp.

262 {
263 return fwd( [&]( IDataProviderSvc& p ) { return p.preLoad(); } );
264 }
IDataProviderSvc::preLoad
virtual StatusCode preLoad()=0
Load all preload items of the list.
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43

## ◆ registerAddress() [1/2]

StatusCode HiveWhiteBoard::registerAddress | ( | std::string_view | path,
|  | IOpaqueAddress * | pAddr
| ) |  |
| inline override

IDataManagerSvc: Register object address with the data store.

Definition at line 163 of file HiveWhiteBoard.cpp.

163 {
164 return fwd( [&]( IDataManagerSvc& p ) { return p.registerAddress( path, pAddr ); } );
165 }
IDataManagerSvc::registerAddress
virtual StatusCode registerAddress(std::string_view fullPath, IOpaqueAddress *pAddress)=0
Register object address with the data store.
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataManagerSvc
Definition: IDataManagerSvc.h:45

## ◆ registerAddress() [2/2]

StatusCode HiveWhiteBoard::registerAddress | ( | IRegistry * | parent,
|  | std::string_view | path,
|  | IOpaqueAddress * | pAdd
| ) |  |
| inline override

IDataManagerSvc: Register object address with the data store.

Definition at line 167 of file HiveWhiteBoard.cpp.

167 {
168 return fwd( [&]( IDataManagerSvc& p ) { return p.registerAddress( parent, path, pAdd ); } );
169 }
IDataManagerSvc::registerAddress
virtual StatusCode registerAddress(std::string_view fullPath, IOpaqueAddress *pAddress)=0
Register object address with the data store.
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataManagerSvc
Definition: IDataManagerSvc.h:45

## ◆ registerObject() [1/2]

StatusCode HiveWhiteBoard::registerObject | ( | std::string_view | parent,
|  | std::string_view | obj,
|  | DataObject * | pObj
| ) |  |
| inline override

Register object with the data store.

Definition at line 266 of file HiveWhiteBoard.cpp.

266 {
267 return fwd( [&]( IDataProviderSvc& p ) { return p.registerObject( parent, obj, pObj ); } );
268 }
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::registerObject
StatusCode registerObject(std::string_view fullPath, DataObject *pObject)
Register object with the data store.
Definition: IDataProviderSvc.h:62

## ◆ registerObject() [2/2]

StatusCode HiveWhiteBoard::registerObject | ( | DataObject * | parent,
|  | std::string_view | obj,
|  | DataObject * | pObj
| ) |  |
| inline override

Register object with the data store.

Definition at line 270 of file HiveWhiteBoard.cpp.

270 {
271 return fwd( [&]( IDataProviderSvc& p ) { return p.registerObject( parent, obj, pObj ); } );
272 }
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::registerObject
StatusCode registerObject(std::string_view fullPath, DataObject *pObject)
Register object with the data store.
Definition: IDataProviderSvc.h:62

## ◆ reinitialize()

StatusCode HiveWhiteBoard::reinitialize | ( |  | ) |
| inline override

Service initialisation.

Definition at line 472 of file HiveWhiteBoard.cpp.

472 {
473 StatusCode sc = Service::reinitialize();
474 if ( !sc.isSuccess() ) {
475 error() << "Unable to reinitialize base class" << endmsg;
476 return sc;
477 }
478 detachServices();
479 sc = attachServices();
480 if ( !sc.isSuccess() ) {
481 error() << "Failed to attach necessary services." << endmsg;
482 return sc;
483 }
484 return StatusCode::SUCCESS;
485 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
HiveWhiteBoard::detachServices
StatusCode detachServices()
Definition: HiveWhiteBoard.cpp:416
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
Service::reinitialize
StatusCode reinitialize() override
Definition: Service.cpp:237
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
HiveWhiteBoard::attachServices
StatusCode attachServices()
Definition: HiveWhiteBoard.cpp:392
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

## ◆ removePreLoadItem()

StatusCode HiveWhiteBoard::removePreLoadItem | ( | const DataStoreItem & | item | ) |
| inline override

Remove an item from the preload list.

Definition at line 252 of file HiveWhiteBoard.cpp.

252 {
253 for_( m_partitions, [&]( Partition& p ) { p.dataProvider->removePreLoadItem( item ); } );
254 return StatusCode::SUCCESS;
255 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134

## ◆ resetPreLoad()

StatusCode HiveWhiteBoard::resetPreLoad | ( |  | ) |
| inline override

Clear the preload list.

Definition at line 257 of file HiveWhiteBoard.cpp.

257 {
258 for_( m_partitions, [&]( Partition& p ) { p.dataProvider->resetPreLoad(); } );
259 return StatusCode::SUCCESS;
260 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134

## ◆ retrieveObject()

StatusCode HiveWhiteBoard::retrieveObject | ( | IRegistry * | parent,
|  | std::string_view | path,
|  | DataObject *& | pObj
| ) |  |
| inline override

Retrieve object from data store.

Definition at line 286 of file HiveWhiteBoard.cpp.

286 {
287 return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, path, pObj ); } );
288 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::retrieveObject
virtual StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.

## ◆ rootCLID()

CLID HiveWhiteBoard::rootCLID | ( |  | ) | const
| inline override

IDataManagerSvc: Accessor for root event CLID.

Definition at line 158 of file HiveWhiteBoard.cpp.

158 { return (CLID)m_rootCLID; }
HiveWhiteBoard::m_rootCLID
Gaudi::Property< CLID > m_rootCLID
Definition: HiveWhiteBoard.cpp:121
CLID
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8

## ◆ rootName()

const std::string& HiveWhiteBoard::rootName | ( |  | ) | const
| inline override

Name for root Event.

Definition at line 160 of file HiveWhiteBoard.cpp.

160 { return m_rootName; }
HiveWhiteBoard::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: HiveWhiteBoard.cpp:122

## ◆ selectStore()

StatusCode HiveWhiteBoard::selectStore | ( | size_t | partition | ) |
| inline override

Activate a partition object. The identifies the partition uniquely.

Definition at line 336 of file HiveWhiteBoard.cpp.

336 {
337 s_current = &m_partitions[partition];
338 return StatusCode::SUCCESS;
339 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134
std::partition
T partition(T... args)

## ◆ setDataLoader()

StatusCode HiveWhiteBoard::setDataLoader | ( | IConversionSvc * | pDataLoader,
|  | IDataProviderSvc * | = `nullptr`
| ) |  |
| inline override

IDataManagerSvc: Pass a default data loader to the service.

The optional data provider is not considered. On the other hand, the data provider is specified to be the whiteboard.

Definition at line 238 of file HiveWhiteBoard.cpp.

238 {
239 if ( pDataLoader ) pDataLoader->addRef();
240 if ( m_dataLoader ) m_dataLoader->release();
241 if ( pDataLoader ) pDataLoader->setDataProvider( this );
242 m_dataLoader = pDataLoader;
243 for_( m_partitions, [&]( Partition& p ) { p.dataManager->setDataLoader( m_dataLoader, this ).ignore(); } );
244 return StatusCode::SUCCESS;
245 }
IConverter::setDataProvider
virtual StatusCode setDataProvider(IDataProviderSvc *pService)=0
Set Data provider service.
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
HiveWhiteBoard::m_partitions
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
Definition: HiveWhiteBoard.cpp:134
IInterface::release
virtual unsigned long release()=0
Release Interface instance.
IInterface::addRef
virtual unsigned long addRef()=0
Increment the reference count of Interface instance.
HiveWhiteBoard::m_dataLoader
IConversionSvc * m_dataLoader
Pointer to data loader service.
Definition: HiveWhiteBoard.cpp:130

## ◆ setNumberOfStores()

StatusCode HiveWhiteBoard::setNumberOfStores | ( | size_t | slots | ) |
| inline override

Set the number of event slots (copies of DataSvc objects).

Definition at line 342 of file HiveWhiteBoard.cpp.

342 {
343 if ( FSMState() == Gaudi::StateMachine::INITIALIZED || FSMState() == Gaudi::StateMachine::RUNNING ) {
344 warning() << "Too late to change the number of slots!" << endmsg;
345 return StatusCode::FAILURE;
346 }
347 m_slots = slots;
348 Gaudi::Concurrency::ConcurrencyFlags::setNumConcEvents( slots );
349 return StatusCode::SUCCESS;
350 }
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:15
Service::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: Service.h:52
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:101
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
HiveWhiteBoard::m_slots
Gaudi::Property< size_t > m_slots
Definition: HiveWhiteBoard.cpp:124
Gaudi::StateMachine::RUNNING
Definition: StateMachine.h:16
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
Gaudi::Concurrency::ConcurrencyFlags::setNumConcEvents
static GAUDI_API void setNumConcEvents(const std::size_t &nE)
Definition: ConcurrencyFlags.h:59

## ◆ setRoot() [1/2]

StatusCode HiveWhiteBoard::setRoot | ( | std::string | path,
|  | DataObject * | pObj
| ) |  |
| inline override

Initialize data store for new event by giving new event path and root object.

Takes care to clear the store before reinitializing it

Definition at line 222 of file HiveWhiteBoard.cpp.

222 {
223 return fwd(
224 [pObj, path = std::move( path )]( IDataManagerSvc& p ) { return p.setRoot( std::move( path ), pObj ); } );
225 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataManagerSvc::setRoot
virtual StatusCode setRoot(std::string root_name, DataObject *pObject)=0
Initialize data store for new event by giving new event path.
std::move
T move(T... args)

## ◆ setRoot() [2/2]

StatusCode HiveWhiteBoard::setRoot | ( | std::string | path,
|  | IOpaqueAddress * | pAddr
| ) |  |
| inline override

Initialize data store for new event by giving new event path and address of root object.

Takes care to clear the store before reinitializing it

Definition at line 229 of file HiveWhiteBoard.cpp.

229 {
230 return fwd(
231 [pAddr, path = std::move( path )]( IDataManagerSvc& p ) { return p.setRoot( std::move( path ), pAddr ); } );
232 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataManagerSvc::setRoot
virtual StatusCode setRoot(std::string root_name, DataObject *pObject)=0
Initialize data store for new event by giving new event path.
std::move
T move(T... args)

## ◆ traverseSubTree() [1/2]

StatusCode HiveWhiteBoard::traverseSubTree | ( | std::string_view | path,
|  | IDataStoreAgent * | pAgent
| ) |  |
| inline override

Analyze by traversing all data objects below the sub tree.

Definition at line 209 of file HiveWhiteBoard.cpp.

209 {
210 return fwd( [&]( IDataManagerSvc& p ) { return p.traverseSubTree( path, pAgent ); } );
211 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataManagerSvc::traverseSubTree
virtual StatusCode traverseSubTree(std::string_view sub_tree_path, IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects below the sub tree identified by its full path name.
IDataManagerSvc
Definition: IDataManagerSvc.h:45

## ◆ traverseSubTree() [2/2]

StatusCode HiveWhiteBoard::traverseSubTree | ( | DataObject * | pObject,
|  | IDataStoreAgent * | pAgent
| ) |  |
| inline override

IDataManagerSvc: Analyze by traversing all data objects below the sub tree.

Definition at line 213 of file HiveWhiteBoard.cpp.

213 {
214 return fwd( [&]( IDataManagerSvc& p ) { return p.traverseSubTree( pObject, pAgent ); } );
215 }
IDataManagerSvc::traverseSubTree
virtual StatusCode traverseSubTree(std::string_view sub_tree_path, IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects below the sub tree identified by its full path name.
IDataManagerSvc
Definition: IDataManagerSvc.h:45

## ◆ traverseTree()

StatusCode HiveWhiteBoard::traverseTree | ( | IDataStoreAgent * | pAgent | ) |
| inline override

IDataManagerSvc: Analyze by traversing all data objects in the data store.

Definition at line 217 of file HiveWhiteBoard.cpp.

217 {
218 return fwd( [&]( IDataManagerSvc& p ) { return p.traverseTree( pAgent ); } );
219 }
IDataManagerSvc::traverseTree
virtual StatusCode traverseTree(IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects in the data store.
IDataManagerSvc
Definition: IDataManagerSvc.h:45

## ◆ unlinkObject() [1/3]

StatusCode HiveWhiteBoard::unlinkObject | ( | IRegistry * | from,
|  | std::string_view | objPath
| ) |  |
| inline override

Remove a link to another object.

Definition at line 306 of file HiveWhiteBoard.cpp.

306 {
307 return fwd( [&]( IDataProviderSvc& p ) { return p.unlinkObject( from, objPath ); } );
308 }
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::unlinkObject
virtual StatusCode unlinkObject(IRegistry *from, std::string_view objPath)=0
Remove a link to another object.

## ◆ unlinkObject() [2/3]

StatusCode HiveWhiteBoard::unlinkObject | ( | DataObject * | from,
|  | std::string_view | objPath
| ) |  |
| inline override

Remove a link to another object.

Definition at line 310 of file HiveWhiteBoard.cpp.

310 {
311 return fwd( [&]( IDataProviderSvc& p ) { return p.unlinkObject( from, objPath ); } );
312 }
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::unlinkObject
virtual StatusCode unlinkObject(IRegistry *from, std::string_view objPath)=0
Remove a link to another object.

## ◆ unlinkObject() [3/3]

StatusCode HiveWhiteBoard::unlinkObject | ( | std::string_view | path | ) |
| inline override

Remove a link to another object.

Definition at line 314 of file HiveWhiteBoard.cpp.

314 {
315 return fwd( [&]( IDataProviderSvc& p ) { return p.unlinkObject( path ); } );
316 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::unlinkObject
virtual StatusCode unlinkObject(IRegistry *from, std::string_view objPath)=0
Remove a link to another object.

## ◆ unregisterAddress() [1/2]

StatusCode HiveWhiteBoard::unregisterAddress | ( | std::string_view | path | ) |
| inline override

IDataManagerSvc: Unregister object address from the data store.

Definition at line 171 of file HiveWhiteBoard.cpp.

171 {
172 return fwd( [&]( IDataManagerSvc& p ) { return p.unregisterAddress( path ); } );
173 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataManagerSvc::unregisterAddress
virtual StatusCode unregisterAddress(std::string_view fullPath)=0
Unregister object address from the data store.

## ◆ unregisterAddress() [2/2]

StatusCode HiveWhiteBoard::unregisterAddress | ( | IRegistry * | pParent,
|  | std::string_view | path
| ) |  |
| inline override

IDataManagerSvc: Unregister object address from the data store.

Definition at line 175 of file HiveWhiteBoard.cpp.

175 {
176 return fwd( [&]( IDataManagerSvc& p ) { return p.unregisterAddress( pParent, path ); } );
177 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataManagerSvc::unregisterAddress
virtual StatusCode unregisterAddress(std::string_view fullPath)=0
Unregister object address from the data store.

## ◆ unregisterObject() [1/3]

StatusCode HiveWhiteBoard::unregisterObject | ( | std::string_view | path | ) |
| inline override

Unregister object from the data store.

Definition at line 274 of file HiveWhiteBoard.cpp.

274 {
275 return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( path ); } );
276 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::unregisterObject
virtual StatusCode unregisterObject(std::string_view fullPath)=0
Unregister object from the data store.

## ◆ unregisterObject() [2/3]

StatusCode HiveWhiteBoard::unregisterObject | ( | DataObject * | pObj | ) |
| inline override

Unregister object from the data store.

Definition at line 278 of file HiveWhiteBoard.cpp.

278 {
279 return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( pObj ); } );
280 }
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::unregisterObject
virtual StatusCode unregisterObject(std::string_view fullPath)=0
Unregister object from the data store.

## ◆ unregisterObject() [3/3]

StatusCode HiveWhiteBoard::unregisterObject | ( | DataObject * | pObj,
|  | std::string_view | path
| ) |  |
| inline override

Unregister object from the data store.

Definition at line 282 of file HiveWhiteBoard.cpp.

282 {
283 return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( pObj, path ); } );
284 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::unregisterObject
virtual StatusCode unregisterObject(std::string_view fullPath)=0
Unregister object from the data store.

## ◆ updateObject() [1/2]

StatusCode HiveWhiteBoard::updateObject | ( | IRegistry * | pDirectory | ) |
| inline override

Update object identified by its directory entry.

Definition at line 318 of file HiveWhiteBoard.cpp.

318 {
319 return fwd( [&]( IDataProviderSvc& p ) { return p.updateObject( pDirectory ); } );
320 }
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::updateObject
virtual StatusCode updateObject(IRegistry *pDirectory)=0
Update object identified by its directory entry.

## ◆ updateObject() [2/2]

StatusCode HiveWhiteBoard::updateObject | ( | DataObject * | pObj | ) |
| inline override

Update object.

Definition at line 322 of file HiveWhiteBoard.cpp.

322 {
323 return fwd( [&]( IDataProviderSvc& p ) { return p.updateObject( pObj ); } );
324 }
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:43
IDataProviderSvc::updateObject
virtual StatusCode updateObject(IRegistry *pDirectory)=0
Update object identified by its directory entry.

## Member Data Documentation

## ◆ m_addrCreator

IAddressCreator* HiveWhiteBoard::m_addrCreator = nullptr
| protected

Reference to address creator.

Definition at line 132 of file HiveWhiteBoard.cpp.

## ◆ m_dataLoader

IConversionSvc* HiveWhiteBoard::m_dataLoader = nullptr
| protected

Pointer to data loader service.

Definition at line 130 of file HiveWhiteBoard.cpp.

## ◆ m_enableFaultHdlr

Gaudi::Property<bool> HiveWhiteBoard::m_enableFaultHdlr
| protected

Initial value:
{this, "EnableFaultHandler", false,
"enable incidents on data creation requests"}

Definition at line 126 of file HiveWhiteBoard.cpp.

## ◆ m_forceLeaves

Gaudi::Property<bool> HiveWhiteBoard::m_forceLeaves {this, "ForceLeaves", false, "force creation of default leaves on registerObject"}
| protected

Definition at line 125 of file HiveWhiteBoard.cpp.

## ◆ m_freeSlots

tbb::concurrent_queue<size_t> HiveWhiteBoard::m_freeSlots
| protected

fifo queue of free slots

Definition at line 136 of file HiveWhiteBoard.cpp.

## ◆ m_loader

Gaudi::Property<std::string> HiveWhiteBoard::m_loader {this, "DataLoader", "EventPersistencySvc", ""}
| protected

Definition at line 123 of file HiveWhiteBoard.cpp.

## ◆ m_partitions

std::vector<Synced<Partition> > HiveWhiteBoard::m_partitions
| protected

Datastore partitions.

Definition at line 134 of file HiveWhiteBoard.cpp.

## ◆ m_rootCLID

Gaudi::Property<CLID> HiveWhiteBoard::m_rootCLID {this, "RootCLID", 110 , "CLID of root entry"}
| protected

Definition at line 121 of file HiveWhiteBoard.cpp.

## ◆ m_rootName

Gaudi::Property<std::string> HiveWhiteBoard::m_rootName {this, "RootName", "/Event", "name of root entry"}
| protected

Definition at line 122 of file HiveWhiteBoard.cpp.

## ◆ m_slots

Gaudi::Property<size_t> HiveWhiteBoard::m_slots {this, "EventSlots", 1, "number of event slots"}
| protected

Definition at line 124 of file HiveWhiteBoard.cpp.

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

- GaudiHive/src/HiveWhiteBoard.cpp