The Gaudi Framework  v30r0 (c919700c)
HiveWhiteBoard Class Reference

Data service base class. More...

Inheritance diagram for HiveWhiteBoard:
Collaboration diagram for HiveWhiteBoard:

Public Member Functions

 ~HiveWhiteBoard () override
 Standard Destructor. More...
 
unsigned int freeSlots () override
 Get free slots number. More...
 
CLID rootCLID () const override
 IDataManagerSvc: Accessor for root event CLID. More...
 
const std::stringrootName () const override
 Name for root Event. More...
 
StatusCode registerAddress (boost::string_ref path, IOpaqueAddress *pAddr) override
 IDataManagerSvc: Register object address with the data store. More...
 
StatusCode registerAddress (DataObject *parent, boost::string_ref path, IOpaqueAddress *pAddr) override
 IDataManagerSvc: Register object address with the data store. More...
 
StatusCode registerAddress (IRegistry *parent, boost::string_ref path, IOpaqueAddress *pAdd) override
 IDataManagerSvc: Register object address with the data store. More...
 
StatusCode unregisterAddress (boost::string_ref path) override
 IDataManagerSvc: Unregister object address from the data store. More...
 
StatusCode unregisterAddress (DataObject *pParent, boost::string_ref path) override
 IDataManagerSvc: Unregister object address from the data store. More...
 
StatusCode unregisterAddress (IRegistry *pParent, boost::string_ref 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 (boost::string_ref 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 (boost::string_ref 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 *dpsvc __attribute__((unused))=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 addPreLoadItem (std::string 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 removePreLoadItem (std::string item) override
 Add an item to 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 (boost::string_ref path, DataObject *pObj) override
 Register object with the data store. (The most common one is the only monitored one for the time being....) More...
 
StatusCode registerObject (boost::string_ref parent, boost::string_ref obj, DataObject *pObj) override
 Register object with the data store. More...
 
StatusCode registerObject (boost::string_ref parent, int item, DataObject *pObj) override
 Register object with the data store. More...
 
StatusCode registerObject (DataObject *parent, boost::string_ref obj, DataObject *pObj) override
 Register object with the data store. More...
 
StatusCode registerObject (DataObject *parent, int obj, DataObject *pObj) override
 Register object with the data store. More...
 
StatusCode unregisterObject (boost::string_ref path) override
 Unregister object from the data store. More...
 
StatusCode unregisterObject (boost::string_ref parent, boost::string_ref obj) override
 Unregister object from the data store. More...
 
StatusCode unregisterObject (boost::string_ref parent, int obj) override
 Unregister object from the data store. More...
 
StatusCode unregisterObject (DataObject *pObj) override
 Unregister object from the data store. More...
 
StatusCode unregisterObject (DataObject *pObj, boost::string_ref path) override
 Unregister object from the data store. More...
 
StatusCode unregisterObject (DataObject *pObj, int item) override
 Unregister object from the data store. More...
 
StatusCode retrieveObject (IRegistry *parent, boost::string_ref path, DataObject *&pObj) override
 Retrieve object from data store. More...
 
StatusCode retrieveObject (boost::string_ref path, DataObject *&pObj) override
 Retrieve object identified by its full path from the data store. More...
 
StatusCode retrieveObject (boost::string_ref parent, boost::string_ref path, DataObject *&pObj) override
 Retrieve object from data store. More...
 
StatusCode retrieveObject (boost::string_ref parent, int item, DataObject *&pObj) override
 Retrieve object from data store. More...
 
StatusCode retrieveObject (DataObject *parent, boost::string_ref path, DataObject *&pObj) override
 Retrieve object from data store. More...
 
StatusCode retrieveObject (DataObject *parent, int item, DataObject *&pObj) override
 Retrieve object from data store. More...
 
StatusCode findObject (boost::string_ref path, DataObject *&pObj) override
 Find object identified by its full path in the data store. More...
 
StatusCode findObject (IRegistry *parent, boost::string_ref path, DataObject *&pObj) override
 Find object identified by its full path in the data store. More...
 
StatusCode findObject (boost::string_ref parent, boost::string_ref path, DataObject *&pObj) override
 Find object in the data store. More...
 
StatusCode findObject (boost::string_ref parent, int item, DataObject *&pObject) override
 Find object in the data store. More...
 
StatusCode findObject (DataObject *parent, boost::string_ref path, DataObject *&pObject) override
 Find object in the data store. More...
 
StatusCode findObject (DataObject *parent, int item, DataObject *&pObject) override
 Find object in the data store. More...
 
StatusCode linkObject (IRegistry *from, boost::string_ref objPath, DataObject *to) override
 Add a link to another object. More...
 
StatusCode linkObject (boost::string_ref from, boost::string_ref objPath, DataObject *to) override
 Add a link to another object. More...
 
StatusCode linkObject (DataObject *from, boost::string_ref objPath, DataObject *to) override
 Add a link to another object. More...
 
StatusCode linkObject (boost::string_ref fullPath, DataObject *to) override
 Add a link to another object. More...
 
StatusCode unlinkObject (IRegistry *from, boost::string_ref objPath) override
 Remove a link to another object. More...
 
StatusCode unlinkObject (boost::string_ref from, boost::string_ref objPath) override
 Remove a link to another object. More...
 
StatusCode unlinkObject (DataObject *from, boost::string_ref objPath) override
 Remove a link to another object. More...
 
StatusCode unlinkObject (boost::string_ref path) override
 Remove a link to another object. More...
 
StatusCode updateObject (IRegistry *pDirectory) override
 Update object identified by its directory entry. More...
 
StatusCode updateObject (boost::string_ref path) override
 Update object. More...
 
StatusCode updateObject (DataObject *pObj) override
 Update object. More...
 
StatusCode updateObject (boost::string_ref parent, boost::string_ref updatePath) override
 Update object. More...
 
StatusCode updateObject (DataObject *parent, boost::string_ref updatePath) 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...
 
DataObjIDColl getNewDataObjects () override
 Get the list of new DataObjects in the current store. More...
 
void addNewDataObjects (DataObjIDColl &products) override
 add to the list of new DataObjects in the current store. 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::stringgetInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
 ~extends () override=default
 Virtual destructor. More...
 
- Public Member Functions inherited from Service
const std::stringname () 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::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property. More...
 
Gaudi::Details::PropertyBasedeclareProperty (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::PropertyBasedeclareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const
 
Gaudi::Details::PropertyBasedeclareProperty (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::PropertyBasedeclareRemoteProperty (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::PropertyBasegetProperty (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
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none")
 Specializations for various GaudiHandles. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none")
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none")
 
- Public Member Functions inherited from CommonMessagingBase
virtual ~CommonMessagingBase ()=default
 Virtual destructor. More...
 
const SmartIF< IMessageSvc > & msgSvc () const
 The standard message service. More...
 
MsgStreammsgStream () const
 Return an uninitialized MsgStream. More...
 
MsgStreammsgStream (const MSG::Level level) const
 Predefined configurable message stream for the efficient printouts. More...
 
MsgStreamalways () const
 shortcut for the method msgStream(MSG::ALWAYS) More...
 
MsgStreamfatal () const
 shortcut for the method msgStream(MSG::FATAL) More...
 
MsgStreamerr () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamerror () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamwarning () const
 shortcut for the method msgStream(MSG::WARNING) More...
 
MsgStreaminfo () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MsgStreamdebug () const
 shortcut for the method msgStream(MSG::DEBUG) More...
 
MsgStreamverbose () const
 shortcut for the method msgStream(MSG::VERBOSE) More...
 
MsgStreammsg () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MSG::Level msgLevel () const
 get the cached level (originally extracted 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...
 

Protected Attributes

Gaudi::Property< CLIDm_rootCLID {this, "RootCLID", 110 , "CLID of root entry"}
 
Gaudi::Property< std::stringm_rootName {this, "RootName", "/Event", "name of root entry"}
 
Gaudi::Property< std::stringm_loader {this, "DataLoader", "EventPersistencySvc", ""}
 
Gaudi::Property< int > 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
 
IConversionSvcm_dataLoader = nullptr
 Pointer to data loader service. More...
 
IAddressCreatorm_addrCreator = nullptr
 Reference to address creator. More...
 
std::vector< Synced< Partition > > m_partitions
 Datastore partitions. More...
 
std::atomic_int m_freeSlots {0}
 number 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, "[[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< IAuditorSvcm_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
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::PropertyBaseproperty (const std::string &name) const
 
- Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level setUpMessaging ()
 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 149 of file HiveWhiteBoard.cpp.

Constructor & Destructor Documentation

HiveWhiteBoard::~HiveWhiteBoard ( )
inlineoverride

Standard Destructor.

Definition at line 174 of file HiveWhiteBoard.cpp.

175  {
176  setDataLoader( 0 ).ignore();
177  resetPreLoad().ignore();
178  clearStore().ignore();
179  for_( m_partitions, []( Partition& p ) {
180  p.dataManager->release();
181  p.dataProvider->release();
182  } );
184  }
StatusCode setDataLoader(IConversionSvc *pDataLoader, IDataProviderSvc *dpsvc __attribute__((unused))=nullptr) override
IDataManagerSvc: Pass a default data loader to the service.
StatusCode resetPreLoad() override
Clear the preload list.
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
StatusCode clearStore() override
IDataManagerSvc: Remove all data objects in the data store.
T clear(T...args)
void ignore() const
Definition: StatusCode.h:84

Member Function Documentation

void HiveWhiteBoard::addNewDataObjects ( DataObjIDColl products)
inlineoverride

add to the list of new DataObjects in the current store.

Definition at line 571 of file HiveWhiteBoard.cpp.

572  {
573  s_current->with_lock( [&]( Partition& p ) { p.newDataObjects.insert( begin( products ), end( products ) ); } );
574  }
auto begin(reverse_wrapper< T > &w)
Definition: reverse.h:58
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:64
StatusCode HiveWhiteBoard::addPreLoadItem ( const DataStoreItem item)
inlineoverride

Add an item to the preload list.

Definition at line 307 of file HiveWhiteBoard.cpp.

308  {
309  for_( m_partitions, [&]( Partition& p ) { p.dataProvider->addPreLoadItem( item ); } );
310  return StatusCode::SUCCESS;
311  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
StatusCode HiveWhiteBoard::addPreLoadItem ( std::string  item)
inlineoverride

Add an item to the preload list.

Definition at line 313 of file HiveWhiteBoard.cpp.

314  {
315  for_( m_partitions, [&]( Partition& p ) { p.dataProvider->addPreLoadItem( item ); } );
316  return StatusCode::SUCCESS;
317  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
size_t HiveWhiteBoard::allocateStore ( int  evtnumber)
inlineoverride

Allocate a store partition for a given event number.

Definition at line 584 of file HiveWhiteBoard.cpp.

585  {
586  enum class Status { NotFound, Allocated, StillActive };
587  auto attempt_to_allocate = with_lock( [evtnumber, this]( Partition& p ) {
588  if ( p.eventNumber == evtnumber ) return Status::StillActive;
589  if ( p.eventNumber == -1 ) {
590  this->m_freeSlots--;
591  p.eventNumber = evtnumber;
592  return Status::Allocated;
593  }
594  return Status::NotFound;
595  } );
596 
597  size_t index = 0;
598  for ( auto& p : m_partitions ) {
599  switch ( attempt_to_allocate( p ) ) {
600  case Status::StillActive:
601  error() << "Attempt to allocate a store partition for an event that is still active" << endmsg;
602  return std::string::npos;
603  case Status::Allocated:
604  // info() << "Got allocated slot..." << index << endmsg;
605  return index;
606  default:
607  ++index;
608  }
609  };
610  return std::string::npos;
611  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
StatusCode HiveWhiteBoard::attachServices ( )
inline

Definition at line 630 of file HiveWhiteBoard.cpp.

631  {
632  StatusCode sc = service( m_loader, m_addrCreator, true );
633  if ( !sc.isSuccess() ) {
634  error() << "Failed to retrieve data loader "
635  << "\"" << m_loader << "\"" << endmsg;
636  return sc;
637  }
638  IConversionSvc* dataLoader = nullptr;
639  sc = service( m_loader, dataLoader, true );
640  if ( !sc.isSuccess() ) {
641  error() << MSG::ERROR << "Failed to retrieve data loader "
642  << "\"" << m_loader << "\"" << endmsg;
643  return sc;
644  }
645  sc = setDataLoader( dataLoader );
646  dataLoader->release();
647  if ( !sc.isSuccess() ) {
648  error() << MSG::ERROR << "Failed to set data loader "
649  << "\"" << m_loader << "\"" << endmsg;
650  return sc;
651  }
652  return sc;
653  }
StatusCode setDataLoader(IConversionSvc *pDataLoader, IDataProviderSvc *dpsvc __attribute__((unused))=nullptr) override
IDataManagerSvc: Pass a default data loader to the service.
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
Gaudi::Property< std::string > m_loader
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
virtual unsigned long release()=0
Release Interface instance.
IAddressCreator * m_addrCreator
Reference to address creator.
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
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
StatusCode HiveWhiteBoard::clearStore ( )
inlineoverride

IDataManagerSvc: Remove all data objects in the data store.

Definition at line 255 of file HiveWhiteBoard.cpp.

256  {
257  for_( m_partitions, []( Partition& p ) { p.dataManager->clearStore().ignore(); } );
258  return StatusCode::SUCCESS;
259  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
StatusCode HiveWhiteBoard::clearStore ( size_t  partition)
inlineoverride

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

Definition at line 538 of file HiveWhiteBoard.cpp.

539  {
540  return m_partitions[partition].with_lock( []( Partition& p ) { return p.dataManager->clearStore(); } );
541  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
T partition(T...args)
StatusCode HiveWhiteBoard::clearSubTree ( boost::string_ref  path)
inlineoverride

Remove all data objects below the sub tree identified.

Definition at line 245 of file HiveWhiteBoard.cpp.

246  {
247  return fwd( [&]( IDataManagerSvc& p ) { return p.clearSubTree( path ); } );
248  }
virtual StatusCode clearSubTree(boost::string_ref sub_path)=0
Remove all data objects below the sub tree identified by its full path name.
StatusCode HiveWhiteBoard::clearSubTree ( DataObject pObject)
inlineoverride

Remove all data objects below the sub tree identified.

Definition at line 250 of file HiveWhiteBoard.cpp.

251  {
252  return fwd( [&]( IDataManagerSvc& p ) { return p.clearSubTree( pObject ); } );
253  }
virtual StatusCode clearSubTree(boost::string_ref sub_path)=0
Remove all data objects below the sub tree identified by its full path name.
StatusCode HiveWhiteBoard::detachServices ( )
inline

Definition at line 655 of file HiveWhiteBoard.cpp.

656  {
659  m_addrCreator = nullptr;
660  m_dataLoader = nullptr;
661  return StatusCode::SUCCESS;
662  }
virtual unsigned long release()=0
Release Interface instance.
IAddressCreator * m_addrCreator
Reference to address creator.
IConversionSvc * m_dataLoader
Pointer to data loader service.
bool HiveWhiteBoard::exists ( const DataObjID id)
inlineoverride

check if a data object exists in the current store

Definition at line 577 of file HiveWhiteBoard.cpp.

578  {
579  DataObject* pObject{nullptr};
580  return findObject( id.fullKey(), pObject ).isSuccess();
581  }
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
StatusCode findObject(boost::string_ref path, DataObject *&pObj) override
Find object identified by its full path in the data store.
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
StatusCode HiveWhiteBoard::finalize ( )
inlineoverride

Service initialisation.

Definition at line 725 of file HiveWhiteBoard.cpp.

726  {
727  setDataLoader( 0 ).ignore();
728  clearStore().ignore();
729  return Service::finalize();
730  }
StatusCode setDataLoader(IConversionSvc *pDataLoader, IDataProviderSvc *dpsvc __attribute__((unused))=nullptr) override
IDataManagerSvc: Pass a default data loader to the service.
StatusCode finalize() override
Definition: Service.cpp:174
StatusCode clearStore() override
IDataManagerSvc: Remove all data objects in the data store.
void ignore() const
Definition: StatusCode.h:84
StatusCode HiveWhiteBoard::findObject ( boost::string_ref  path,
DataObject *&  pObj 
)
inlineoverride

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

Definition at line 438 of file HiveWhiteBoard.cpp.

439  {
440  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( path, pObj ); } );
441  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode HiveWhiteBoard::findObject ( IRegistry parent,
boost::string_ref  path,
DataObject *&  pObj 
)
inlineoverride

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

Definition at line 443 of file HiveWhiteBoard.cpp.

444  {
445  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, path, pObj ); } );
446  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode HiveWhiteBoard::findObject ( boost::string_ref  parent,
boost::string_ref  path,
DataObject *&  pObj 
)
inlineoverride

Find object in the data store.

Definition at line 448 of file HiveWhiteBoard.cpp.

449  {
450  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, path, pObj ); } );
451  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode HiveWhiteBoard::findObject ( boost::string_ref  parent,
int  item,
DataObject *&  pObject 
)
inlineoverride

Find object in the data store.

Definition at line 453 of file HiveWhiteBoard.cpp.

454  {
455  return fwd( [&]( IDataProviderSvc& p ) { return p.findObject( parent, item, pObject ); } );
456  }
virtual StatusCode findObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Find object identified by its directory entry.
Data provider interface definition.
StatusCode HiveWhiteBoard::findObject ( DataObject parent,
boost::string_ref  path,
DataObject *&  pObject 
)
inlineoverride

Find object in the data store.

Definition at line 458 of file HiveWhiteBoard.cpp.

459  {
460  return fwd( [&]( IDataProviderSvc& p ) { return p.findObject( parent, path, pObject ); } );
461  }
virtual StatusCode findObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Find object identified by its directory entry.
Data provider interface definition.
StatusCode HiveWhiteBoard::findObject ( DataObject parent,
int  item,
DataObject *&  pObject 
)
inlineoverride

Find object in the data store.

Definition at line 463 of file HiveWhiteBoard.cpp.

464  {
465  return fwd( [&]( IDataProviderSvc& p ) { return p.findObject( parent, item, pObject ); } );
466  }
virtual StatusCode findObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Find object identified by its directory entry.
Data provider interface definition.
unsigned int HiveWhiteBoard::freeSlots ( )
inlineoverride

Get free slots number.

Definition at line 187 of file HiveWhiteBoard.cpp.

187 { return m_freeSlots.load(); };
std::atomic_int m_freeSlots
number of free slots
StatusCode HiveWhiteBoard::freeStore ( size_t  partition)
inlineoverride

Free a store partition.

Definition at line 614 of file HiveWhiteBoard.cpp.

615  {
616  m_partitions[partition].with_lock( []( Partition& p ) { p.eventNumber = -1; } );
617  // info() << "Freed slot..." << partition << endmsg;
618  m_freeSlots++;
619  return StatusCode::SUCCESS;
620  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
T partition(T...args)
std::atomic_int m_freeSlots
number of free slots
DataObjIDColl HiveWhiteBoard::getNewDataObjects ( )
inlineoverride

Get the list of new DataObjects in the current store.

Definition at line 565 of file HiveWhiteBoard.cpp.

566  {
567  return s_current->with_lock( [&]( Partition& p ) { return std::exchange( p.newDataObjects, {} ); } );
568  }
size_t HiveWhiteBoard::getNumberOfStores ( ) const
inlineoverride

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

Definition at line 562 of file HiveWhiteBoard.cpp.

562 { return m_slots; }
Gaudi::Property< int > m_slots
size_t HiveWhiteBoard::getPartitionNumber ( int  eventnumber) const
inlineoverride

Get the partition number corresponding to a given event.

Definition at line 623 of file HiveWhiteBoard.cpp.

624  {
626  with_lock( [eventnumber]( const Partition& p ) { return p.eventNumber == eventnumber; } ) );
627  return i != end( m_partitions ) ? std::distance( begin( m_partitions ), i ) : std::string::npos;
628  }
T distance(T...args)
STL namespace.
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
auto begin(reverse_wrapper< T > &w)
Definition: reverse.h:58
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:64
T find_if(T...args)
StatusCode HiveWhiteBoard::initialize ( )
inlineoverride

Service initialisation.

Definition at line 669 of file HiveWhiteBoard.cpp.

670  {
672  if ( !sc.isSuccess() ) {
673  error() << "Unable to initialize base class" << endmsg;
674  return sc;
675  }
676  if ( m_slots < 1 ) {
677  error() << "Invalid number of slots (" << m_slots << ")" << endmsg;
678  return StatusCode::FAILURE;
679  }
680 
682  for ( int i = 0; i < m_slots; i++ ) {
683  DataSvc* svc = new DataSvc( name() + "_" + std::to_string( i ), serviceLocator() );
684  // Percolate properties
685  svc->setProperty( m_rootCLID ).ignore();
686  svc->setProperty( m_rootName ).ignore();
687  svc->setProperty( m_forceLeaves ).ignore();
689  // make sure that CommonMessaging is initialized
690  svc->setProperty( m_outputLevel ).ignore();
691 
692  sc = svc->initialize();
693  if ( !sc.isSuccess() ) {
694  error() << "Failed to instantiate DataSvc as store partition" << endmsg;
695  return sc;
696  }
697  m_partitions[i].with_lock( [&]( Partition& p ) {
698  p.dataProvider = svc;
699  p.dataManager = svc;
700  } );
701  }
702  selectStore( 0 ).ignore();
703  m_freeSlots.store( m_slots );
704  return attachServices();
705  }
Gaudi::Property< int > m_outputLevel
Definition: Service.h:183
StatusCode initialize() override
Definition: Service.cpp:64
Gaudi::Property< std::string > m_rootName
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
Gaudi::Property< bool > m_enableFaultHdlr
StatusCode setProperty(const Gaudi::Details::PropertyBase &p) override
set the property form another property
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
T to_string(T...args)
Gaudi::Property< int > m_slots
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
StatusCode selectStore(size_t partition) override
Activate a partition object. The identifies the partition uniquely.
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Gaudi::Property< CLID > m_rootCLID
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
StatusCode attachServices()
STL class.
Gaudi::Property< bool > m_forceLeaves
StatusCode initialize() override
Service initialization.
Definition: DataSvc.cpp:1086
Data service base class.
Definition: DataSvc.h:44
void ignore() const
Definition: StatusCode.h:84
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:292
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
std::atomic_int m_freeSlots
number of free slots
StatusCode HiveWhiteBoard::linkObject ( IRegistry from,
boost::string_ref  objPath,
DataObject to 
)
inlineoverride

Add a link to another object.

Definition at line 468 of file HiveWhiteBoard.cpp.

469  {
470  return fwd( [&]( IDataProviderSvc& p ) { return p.linkObject( from, objPath, to ); } );
471  }
Data provider interface definition.
virtual StatusCode linkObject(IRegistry *from, boost::string_ref objPath, DataObject *toObj)=0
Add a link to another object.
StatusCode HiveWhiteBoard::linkObject ( boost::string_ref  from,
boost::string_ref  objPath,
DataObject to 
)
inlineoverride

Add a link to another object.

Definition at line 473 of file HiveWhiteBoard.cpp.

474  {
475  return fwd( [&]( IDataProviderSvc& p ) { return p.linkObject( from, objPath, to ); } );
476  }
Data provider interface definition.
virtual StatusCode linkObject(IRegistry *from, boost::string_ref objPath, DataObject *toObj)=0
Add a link to another object.
StatusCode HiveWhiteBoard::linkObject ( DataObject from,
boost::string_ref  objPath,
DataObject to 
)
inlineoverride

Add a link to another object.

Definition at line 478 of file HiveWhiteBoard.cpp.

479  {
480  return fwd( [&]( IDataProviderSvc& p ) { return p.linkObject( from, objPath, to ); } );
481  }
Data provider interface definition.
virtual StatusCode linkObject(IRegistry *from, boost::string_ref objPath, DataObject *toObj)=0
Add a link to another object.
StatusCode HiveWhiteBoard::linkObject ( boost::string_ref  fullPath,
DataObject to 
)
inlineoverride

Add a link to another object.

Definition at line 483 of file HiveWhiteBoard.cpp.

484  {
485  return fwd( [&]( IDataProviderSvc& p ) { return p.linkObject( fullPath, to ); } );
486  }
Data provider interface definition.
virtual StatusCode linkObject(IRegistry *from, boost::string_ref objPath, DataObject *toObj)=0
Add a link to another object.
StatusCode HiveWhiteBoard::objectLeaves ( const DataObject pObject,
std::vector< IRegistry * > &  leaves 
)
inlineoverride

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

Definition at line 225 of file HiveWhiteBoard.cpp.

226  {
227  return fwd( [&]( IDataManagerSvc& p ) { return p.objectLeaves( pObject, leaves ); } );
228  }
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 ...
StatusCode HiveWhiteBoard::objectLeaves ( const IRegistry pObject,
std::vector< IRegistry * > &  leaves 
)
inlineoverride

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

Definition at line 230 of file HiveWhiteBoard.cpp.

231  {
232  return fwd( [&]( IDataManagerSvc& p ) { return p.objectLeaves( pObject, leaves ); } );
233  }
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 ...
StatusCode HiveWhiteBoard::objectParent ( const DataObject pObject,
IRegistry *&  refpParent 
)
inlineoverride

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

Definition at line 235 of file HiveWhiteBoard.cpp.

236  {
237  return fwd( [&]( IDataManagerSvc& p ) { return p.objectParent( pObject, refpParent ); } );
238  }
virtual StatusCode objectParent(const DataObject *pObject, IRegistry *&refpParent)=0
IDataManagerSvc: Explore the object store: retrieve the object&#39;s parent.
StatusCode HiveWhiteBoard::objectParent ( const IRegistry pObject,
IRegistry *&  refpParent 
)
inlineoverride

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

Definition at line 240 of file HiveWhiteBoard.cpp.

241  {
242  return fwd( [&]( IDataManagerSvc& p ) { return p.objectParent( pObject, refpParent ); } );
243  }
virtual StatusCode objectParent(const DataObject *pObject, IRegistry *&refpParent)=0
IDataManagerSvc: Explore the object store: retrieve the object&#39;s parent.
StatusCode HiveWhiteBoard::preLoad ( )
inlineoverride

load all preload items of the list

Definition at line 337 of file HiveWhiteBoard.cpp.

338  {
339  return s_current->with_lock( []( Partition& p ) {
340  StatusCode sc = p.dataProvider->preLoad();
341  DataAgent da( p.newDataObjects );
342  p.dataManager->traverseTree( &da );
343  return sc;
344  } );
345  }
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
StatusCode HiveWhiteBoard::registerAddress ( boost::string_ref  path,
IOpaqueAddress pAddr 
)
inlineoverride

IDataManagerSvc: Register object address with the data store.

Definition at line 195 of file HiveWhiteBoard.cpp.

196  {
197  return fwd( [&]( IDataManagerSvc& p ) { return p.registerAddress( path, pAddr ); } );
198  }
virtual StatusCode registerAddress(boost::string_ref fullPath, IOpaqueAddress *pAddress)=0
Register object address with the data store.
StatusCode HiveWhiteBoard::registerAddress ( DataObject parent,
boost::string_ref  path,
IOpaqueAddress pAddr 
)
inlineoverride

IDataManagerSvc: Register object address with the data store.

Definition at line 200 of file HiveWhiteBoard.cpp.

201  {
202  return fwd( [&]( IDataManagerSvc& p ) { return p.registerAddress( parent, path, pAddr ); } );
203  }
virtual StatusCode registerAddress(boost::string_ref fullPath, IOpaqueAddress *pAddress)=0
Register object address with the data store.
StatusCode HiveWhiteBoard::registerAddress ( IRegistry parent,
boost::string_ref  path,
IOpaqueAddress pAdd 
)
inlineoverride

IDataManagerSvc: Register object address with the data store.

Definition at line 205 of file HiveWhiteBoard.cpp.

206  {
207  return fwd( [&]( IDataManagerSvc& p ) { return p.registerAddress( parent, path, pAdd ); } );
208  }
virtual StatusCode registerAddress(boost::string_ref fullPath, IOpaqueAddress *pAddress)=0
Register object address with the data store.
StatusCode HiveWhiteBoard::registerObject ( boost::string_ref  path,
DataObject pObj 
)
inlineoverride

Register object with the data store. (The most common one is the only monitored one for the time being....)

Definition at line 347 of file HiveWhiteBoard.cpp.

348  {
349  return s_current->with_lock( [&]( Partition& p ) {
350  StatusCode sc = p.dataProvider->registerObject( path, pObj );
351  if ( sc.isSuccess() ) {
352  p.newDataObjects.insert( DataObjID( std::string{path.data(), path.size()} ) );
353  }
354  return sc;
355  } );
356  }
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
STL class.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
StatusCode HiveWhiteBoard::registerObject ( boost::string_ref  parent,
boost::string_ref  obj,
DataObject pObj 
)
inlineoverride

Register object with the data store.

Definition at line 358 of file HiveWhiteBoard.cpp.

359  {
360  return fwd( [&]( IDataProviderSvc& p ) { return p.registerObject( parent, obj, pObj ); } );
361  }
Data provider interface definition.
virtual StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject)=0
Register object with the data store.
StatusCode HiveWhiteBoard::registerObject ( boost::string_ref  parent,
int  item,
DataObject pObj 
)
inlineoverride

Register object with the data store.

Definition at line 363 of file HiveWhiteBoard.cpp.

364  {
365  return fwd( [&]( IDataProviderSvc& p ) { return p.registerObject( parent, item, pObj ); } );
366  }
Data provider interface definition.
virtual StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject)=0
Register object with the data store.
StatusCode HiveWhiteBoard::registerObject ( DataObject parent,
boost::string_ref  obj,
DataObject pObj 
)
inlineoverride

Register object with the data store.

Definition at line 368 of file HiveWhiteBoard.cpp.

369  {
370  return fwd( [&]( IDataProviderSvc& p ) { return p.registerObject( parent, obj, pObj ); } );
371  }
Data provider interface definition.
virtual StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject)=0
Register object with the data store.
StatusCode HiveWhiteBoard::registerObject ( DataObject parent,
int  obj,
DataObject pObj 
)
inlineoverride

Register object with the data store.

Definition at line 373 of file HiveWhiteBoard.cpp.

374  {
375  return fwd( [&]( IDataProviderSvc& p ) { return p.registerObject( parent, obj, pObj ); } );
376  }
Data provider interface definition.
virtual StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject)=0
Register object with the data store.
StatusCode HiveWhiteBoard::reinitialize ( )
inlineoverride

Service initialisation.

Definition at line 708 of file HiveWhiteBoard.cpp.

709  {
711  if ( !sc.isSuccess() ) {
712  error() << "Unable to reinitialize base class" << endmsg;
713  return sc;
714  }
715  detachServices();
716  sc = attachServices();
717  if ( !sc.isSuccess() ) {
718  error() << "Failed to attach necessary services." << endmsg;
719  return sc;
720  }
721  return StatusCode::SUCCESS;
722  }
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
StatusCode detachServices()
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
StatusCode reinitialize() override
Definition: Service.cpp:250
StatusCode attachServices()
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
StatusCode HiveWhiteBoard::removePreLoadItem ( const DataStoreItem item)
inlineoverride

Remove an item from the preload list.

Definition at line 319 of file HiveWhiteBoard.cpp.

320  {
321  for_( m_partitions, [&]( Partition& p ) { p.dataProvider->removePreLoadItem( item ); } );
322  return StatusCode::SUCCESS;
323  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
StatusCode HiveWhiteBoard::removePreLoadItem ( std::string  item)
inlineoverride

Add an item to the preload list.

Definition at line 325 of file HiveWhiteBoard.cpp.

326  {
327  for_( m_partitions, [&]( Partition& p ) { p.dataProvider->removePreLoadItem( item ); } );
328  return StatusCode::SUCCESS;
329  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
StatusCode HiveWhiteBoard::resetPreLoad ( )
inlineoverride

Clear the preload list.

Definition at line 331 of file HiveWhiteBoard.cpp.

332  {
333  for_( m_partitions, [&]( Partition& p ) { p.dataProvider->resetPreLoad(); } );
334  return StatusCode::SUCCESS;
335  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
StatusCode HiveWhiteBoard::retrieveObject ( IRegistry parent,
boost::string_ref  path,
DataObject *&  pObj 
)
inlineoverride

Retrieve object from data store.

Definition at line 408 of file HiveWhiteBoard.cpp.

409  {
410  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, path, pObj ); } );
411  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode HiveWhiteBoard::retrieveObject ( boost::string_ref  path,
DataObject *&  pObj 
)
inlineoverride

Retrieve object identified by its full path from the data store.

Definition at line 413 of file HiveWhiteBoard.cpp.

414  {
415  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( path, pObj ); } );
416  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode HiveWhiteBoard::retrieveObject ( boost::string_ref  parent,
boost::string_ref  path,
DataObject *&  pObj 
)
inlineoverride

Retrieve object from data store.

Definition at line 418 of file HiveWhiteBoard.cpp.

419  {
420  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, path, pObj ); } );
421  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode HiveWhiteBoard::retrieveObject ( boost::string_ref  parent,
int  item,
DataObject *&  pObj 
)
inlineoverride

Retrieve object from data store.

Definition at line 423 of file HiveWhiteBoard.cpp.

424  {
425  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, item, pObj ); } );
426  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode HiveWhiteBoard::retrieveObject ( DataObject parent,
boost::string_ref  path,
DataObject *&  pObj 
)
inlineoverride

Retrieve object from data store.

Definition at line 428 of file HiveWhiteBoard.cpp.

429  {
430  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, path, pObj ); } );
431  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
StatusCode HiveWhiteBoard::retrieveObject ( DataObject parent,
int  item,
DataObject *&  pObj 
)
inlineoverride

Retrieve object from data store.

Definition at line 433 of file HiveWhiteBoard.cpp.

434  {
435  return fwd( [&]( IDataProviderSvc& p ) { return p.retrieveObject( parent, item, pObj ); } );
436  }
Data provider interface definition.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
CLID HiveWhiteBoard::rootCLID ( ) const
inlineoverride

IDataManagerSvc: Accessor for root event CLID.

Definition at line 190 of file HiveWhiteBoard.cpp.

190 { return (CLID)m_rootCLID; }
Gaudi::Property< CLID > m_rootCLID
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
const std::string& HiveWhiteBoard::rootName ( ) const
inlineoverride

Name for root Event.

Definition at line 192 of file HiveWhiteBoard.cpp.

192 { return m_rootName; }
Gaudi::Property< std::string > m_rootName
StatusCode HiveWhiteBoard::selectStore ( size_t  partition)
inlineoverride

Activate a partition object. The identifies the partition uniquely.

Definition at line 544 of file HiveWhiteBoard.cpp.

545  {
546  s_current = &m_partitions[partition];
547  return StatusCode::SUCCESS;
548  }
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
T partition(T...args)
StatusCode HiveWhiteBoard::setDataLoader ( IConversionSvc pDataLoader,
IDataProviderSvc *dpsvc   __attribute__(unused) = nullptr 
)
inlineoverride

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 296 of file HiveWhiteBoard.cpp.

298  {
299  if ( pDataLoader ) pDataLoader->addRef();
301  if ( pDataLoader ) pDataLoader->setDataProvider( this );
302  m_dataLoader = pDataLoader;
303  for_( m_partitions, [&]( Partition& p ) { p.dataManager->setDataLoader( m_dataLoader, this ).ignore(); } );
304  return SUCCESS;
305  }
virtual StatusCode setDataProvider(IDataProviderSvc *pService)=0
Set Data provider service.
std::vector< Synced< Partition > > m_partitions
Datastore partitions.
virtual unsigned long release()=0
Release Interface instance.
virtual unsigned long addRef()=0
Increment the reference count of Interface instance.
IConversionSvc * m_dataLoader
Pointer to data loader service.
StatusCode HiveWhiteBoard::setNumberOfStores ( size_t  slots)
inlineoverride

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

Definition at line 551 of file HiveWhiteBoard.cpp.

552  {
553  if ( (int)slots != m_slots && FSMState() == Gaudi::StateMachine::INITIALIZED ) {
554  warning() << "Too late to change the number of slots!" << endmsg;
555  return StatusCode::FAILURE;
556  }
557  m_slots = slots;
558  return StatusCode::SUCCESS;
559  }
Gaudi::Property< int > m_slots
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Gaudi::StateMachine::State FSMState() const override
Definition: Service.h:54
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
StatusCode HiveWhiteBoard::setRoot ( std::string  path,
DataObject pObj 
)
inlineoverride

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 278 of file HiveWhiteBoard.cpp.

279  {
280  return fwd(
281  [ pObj, path = std::move( path ) ]( IDataManagerSvc & p ) { return p.setRoot( std::move( path ), pObj ); } );
282  }
virtual StatusCode setRoot(std::string root_name, DataObject *pObject)=0
Initialize data store for new event by giving new event path.
T move(T...args)
StatusCode HiveWhiteBoard::setRoot ( std::string  path,
IOpaqueAddress pAddr 
)
inlineoverride

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 286 of file HiveWhiteBoard.cpp.

287  {
288  return fwd(
289  [ pAddr, path = std::move( path ) ]( IDataManagerSvc & p ) { return p.setRoot( std::move( path ), pAddr ); } );
290  }
virtual StatusCode setRoot(std::string root_name, DataObject *pObject)=0
Initialize data store for new event by giving new event path.
T move(T...args)
StatusCode HiveWhiteBoard::traverseSubTree ( boost::string_ref  path,
IDataStoreAgent pAgent 
)
inlineoverride

Analyze by traversing all data objects below the sub tree.

Definition at line 262 of file HiveWhiteBoard.cpp.

263  {
264  return fwd( [&]( IDataManagerSvc& p ) { return p.traverseSubTree( path, pAgent ); } );
265  }
virtual StatusCode traverseSubTree(boost::string_ref sub_path, IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects below the sub tree identified by its full path name...
StatusCode HiveWhiteBoard::traverseSubTree ( DataObject pObject,
IDataStoreAgent pAgent 
)
inlineoverride

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

Definition at line 267 of file HiveWhiteBoard.cpp.

268  {
269  return fwd( [&]( IDataManagerSvc& p ) { return p.traverseSubTree( pObject, pAgent ); } );
270  }
virtual StatusCode traverseSubTree(boost::string_ref sub_path, IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects below the sub tree identified by its full path name...
StatusCode HiveWhiteBoard::traverseTree ( IDataStoreAgent pAgent)
inlineoverride

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

Definition at line 272 of file HiveWhiteBoard.cpp.

273  {
274  return fwd( [&]( IDataManagerSvc& p ) { return p.traverseTree( pAgent ); } );
275  }
virtual StatusCode traverseTree(IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects in the data store.
StatusCode HiveWhiteBoard::unlinkObject ( IRegistry from,
boost::string_ref  objPath 
)
inlineoverride

Remove a link to another object.

Definition at line 488 of file HiveWhiteBoard.cpp.

489  {
490  return fwd( [&]( IDataProviderSvc& p ) { return p.unlinkObject( from, objPath ); } );
491  }
virtual StatusCode unlinkObject(IRegistry *from, boost::string_ref objPath)=0
Remove a link to another object.
Data provider interface definition.
StatusCode HiveWhiteBoard::unlinkObject ( boost::string_ref  from,
boost::string_ref  objPath 
)
inlineoverride

Remove a link to another object.

Definition at line 493 of file HiveWhiteBoard.cpp.

494  {
495  return fwd( [&]( IDataProviderSvc& p ) { return p.unlinkObject( from, objPath ); } );
496  }
virtual StatusCode unlinkObject(IRegistry *from, boost::string_ref objPath)=0
Remove a link to another object.
Data provider interface definition.
StatusCode HiveWhiteBoard::unlinkObject ( DataObject from,
boost::string_ref  objPath 
)
inlineoverride

Remove a link to another object.

Definition at line 498 of file HiveWhiteBoard.cpp.

499  {
500  return fwd( [&]( IDataProviderSvc& p ) { return p.unlinkObject( from, objPath ); } );
501  }
virtual StatusCode unlinkObject(IRegistry *from, boost::string_ref objPath)=0
Remove a link to another object.
Data provider interface definition.
StatusCode HiveWhiteBoard::unlinkObject ( boost::string_ref  path)
inlineoverride

Remove a link to another object.

Definition at line 503 of file HiveWhiteBoard.cpp.

504  {
505  return fwd( [&]( IDataProviderSvc& p ) { return p.unlinkObject( path ); } );
506  }
virtual StatusCode unlinkObject(IRegistry *from, boost::string_ref objPath)=0
Remove a link to another object.
Data provider interface definition.
StatusCode HiveWhiteBoard::unregisterAddress ( boost::string_ref  path)
inlineoverride

IDataManagerSvc: Unregister object address from the data store.

Definition at line 210 of file HiveWhiteBoard.cpp.

211  {
212  return fwd( [&]( IDataManagerSvc& p ) { return p.unregisterAddress( path ); } );
213  }
virtual StatusCode unregisterAddress(boost::string_ref fullPath)=0
Unregister object address from the data store.
StatusCode HiveWhiteBoard::unregisterAddress ( DataObject pParent,
boost::string_ref  path 
)
inlineoverride

IDataManagerSvc: Unregister object address from the data store.

Definition at line 215 of file HiveWhiteBoard.cpp.

216  {
217  return fwd( [&]( IDataManagerSvc& p ) { return p.unregisterAddress( pParent, path ); } );
218  }
virtual StatusCode unregisterAddress(boost::string_ref fullPath)=0
Unregister object address from the data store.
StatusCode HiveWhiteBoard::unregisterAddress ( IRegistry pParent,
boost::string_ref  path 
)
inlineoverride

IDataManagerSvc: Unregister object address from the data store.

Definition at line 220 of file HiveWhiteBoard.cpp.

221  {
222  return fwd( [&]( IDataManagerSvc& p ) { return p.unregisterAddress( pParent, path ); } );
223  }
virtual StatusCode unregisterAddress(boost::string_ref fullPath)=0
Unregister object address from the data store.
StatusCode HiveWhiteBoard::unregisterObject ( boost::string_ref  path)
inlineoverride

Unregister object from the data store.

Definition at line 378 of file HiveWhiteBoard.cpp.

379  {
380  return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( path ); } );
381  }
Data provider interface definition.
virtual StatusCode unregisterObject(boost::string_ref fullPath)=0
Unregister object from the data store.
StatusCode HiveWhiteBoard::unregisterObject ( boost::string_ref  parent,
boost::string_ref  obj 
)
inlineoverride

Unregister object from the data store.

Definition at line 383 of file HiveWhiteBoard.cpp.

384  {
385  return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( parent, obj ); } );
386  }
Data provider interface definition.
virtual StatusCode unregisterObject(boost::string_ref fullPath)=0
Unregister object from the data store.
StatusCode HiveWhiteBoard::unregisterObject ( boost::string_ref  parent,
int  obj 
)
inlineoverride

Unregister object from the data store.

Definition at line 388 of file HiveWhiteBoard.cpp.

389  {
390  return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( parent, obj ); } );
391  }
Data provider interface definition.
virtual StatusCode unregisterObject(boost::string_ref fullPath)=0
Unregister object from the data store.
StatusCode HiveWhiteBoard::unregisterObject ( DataObject pObj)
inlineoverride

Unregister object from the data store.

Definition at line 393 of file HiveWhiteBoard.cpp.

394  {
395  return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( pObj ); } );
396  }
Data provider interface definition.
virtual StatusCode unregisterObject(boost::string_ref fullPath)=0
Unregister object from the data store.
StatusCode HiveWhiteBoard::unregisterObject ( DataObject pObj,
boost::string_ref  path 
)
inlineoverride

Unregister object from the data store.

Definition at line 398 of file HiveWhiteBoard.cpp.

399  {
400  return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( pObj, path ); } );
401  }
Data provider interface definition.
virtual StatusCode unregisterObject(boost::string_ref fullPath)=0
Unregister object from the data store.
StatusCode HiveWhiteBoard::unregisterObject ( DataObject pObj,
int  item 
)
inlineoverride

Unregister object from the data store.

Definition at line 403 of file HiveWhiteBoard.cpp.

404  {
405  return fwd( [&]( IDataProviderSvc& p ) { return p.unregisterObject( pObj, item ); } );
406  }
Data provider interface definition.
virtual StatusCode unregisterObject(boost::string_ref fullPath)=0
Unregister object from the data store.
StatusCode HiveWhiteBoard::updateObject ( IRegistry pDirectory)
inlineoverride

Update object identified by its directory entry.

Definition at line 508 of file HiveWhiteBoard.cpp.

509  {
510  return fwd( [&]( IDataProviderSvc& p ) { return p.updateObject( pDirectory ); } );
511  }
Data provider interface definition.
virtual StatusCode updateObject(IRegistry *pDirectory)=0
Update object identified by its directory entry.
StatusCode HiveWhiteBoard::updateObject ( boost::string_ref  path)
inlineoverride

Update object.

Definition at line 513 of file HiveWhiteBoard.cpp.

514  {
515  return fwd( [&]( IDataProviderSvc& p ) { return p.updateObject( path ); } );
516  }
Data provider interface definition.
virtual StatusCode updateObject(IRegistry *pDirectory)=0
Update object identified by its directory entry.
StatusCode HiveWhiteBoard::updateObject ( DataObject pObj)
inlineoverride

Update object.

Definition at line 518 of file HiveWhiteBoard.cpp.

519  {
520  return fwd( [&]( IDataProviderSvc& p ) { return p.updateObject( pObj ); } );
521  }
Data provider interface definition.
virtual StatusCode updateObject(IRegistry *pDirectory)=0
Update object identified by its directory entry.
StatusCode HiveWhiteBoard::updateObject ( boost::string_ref  parent,
boost::string_ref  updatePath 
)
inlineoverride

Update object.

Definition at line 523 of file HiveWhiteBoard.cpp.

524  {
525  return fwd( [&]( IDataProviderSvc& p ) { return p.updateObject( parent, updatePath ); } );
526  }
Data provider interface definition.
virtual StatusCode updateObject(IRegistry *pDirectory)=0
Update object identified by its directory entry.
StatusCode HiveWhiteBoard::updateObject ( DataObject parent,
boost::string_ref  updatePath 
)
inlineoverride

Update object.

Definition at line 528 of file HiveWhiteBoard.cpp.

529  {
530  return fwd( [&]( IDataProviderSvc& p ) { return p.updateObject( parent, updatePath ); } );
531  }
Data provider interface definition.
virtual StatusCode updateObject(IRegistry *pDirectory)=0
Update object identified by its directory entry.

Member Data Documentation

IAddressCreator* HiveWhiteBoard::m_addrCreator = nullptr
protected

Reference to address creator.

Definition at line 163 of file HiveWhiteBoard.cpp.

IConversionSvc* HiveWhiteBoard::m_dataLoader = nullptr
protected

Pointer to data loader service.

Definition at line 161 of file HiveWhiteBoard.cpp.

Gaudi::Property<bool> HiveWhiteBoard::m_enableFaultHdlr
protected
Initial value:
{this, "EnableFaultHandler", false,
"enable incidents on data creation requests"}

Definition at line 157 of file HiveWhiteBoard.cpp.

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

Definition at line 156 of file HiveWhiteBoard.cpp.

std::atomic_int HiveWhiteBoard::m_freeSlots {0}
protected

number of free slots

Definition at line 167 of file HiveWhiteBoard.cpp.

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

Definition at line 154 of file HiveWhiteBoard.cpp.

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

Datastore partitions.

Definition at line 165 of file HiveWhiteBoard.cpp.

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

Definition at line 152 of file HiveWhiteBoard.cpp.

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

Definition at line 153 of file HiveWhiteBoard.cpp.

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

Definition at line 155 of file HiveWhiteBoard.cpp.


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