#include <SGHiveMgrSvc.h>
Definition at line 30 of file SGHiveMgrSvc.h.
◆ HiveMgrSvc()
HiveMgrSvc::HiveMgrSvc |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
svc |
|
) |
| |
Standard Service Constructor. sets active store to default event store.
Definition at line 17 of file SGHiveMgrSvc.cxx.
23 declareProperty(
"NSlots",
m_nSlots,
"number of event slots");
◆ ~HiveMgrSvc()
virtual SG::HiveMgrSvc::~HiveMgrSvc |
( |
| ) |
|
|
inlinevirtual |
◆ allocateStore()
size_t HiveMgrSvc::allocateStore |
( |
int |
evtNumber | ) |
|
|
overridevirtual |
Allocate a store slot for new event.
- Parameters
-
evtnumber | [IN] Event number |
slot | [OUT] Returned slot or slot number |
- Returns
- Slot number (npos to indicate an error).
Definition at line 98 of file SGHiveMgrSvc.cxx.
100 error() <<
"No slots available for event number " << evtNumber <<
endmsg;
101 return std::string::npos;
103 std::scoped_lock lock{
m_mutex};
106 error() <<
"Attempt to allocate an event slot for an event that is still active: event number " << evtNumber <<
endmsg;
107 return std::string::npos;
111 <<
" allocated to event number "<< evtNumber <<
endmsg;
116 error() <<
"No slots available for event number " << evtNumber <<
endmsg;
117 return std::string::npos;
◆ clearStore()
StatusCode HiveMgrSvc::clearStore |
( |
size_t |
slotIndex | ) |
|
|
overridevirtual |
Clear a given 'slot'.
- Parameters
-
slot | [IN] Slot number (event slot) * |
- Returns
- Status code indicating failure or success.
Definition at line 57 of file SGHiveMgrSvc.cxx.
60 rc=
m_slots[slotIndex].pEvtStore->clearStore();
61 if (
rc.isSuccess())
debug() <<
"cleared store " << slotIndex <<
endmsg;
63 if (!
rc.isSuccess())
error() <<
"could not clear store " << slotIndex <<
endmsg;
◆ exists()
bool HiveMgrSvc::exists |
( |
const DataObjID & |
id | ) |
|
|
overridevirtual |
Check if a data object exists in store.
TODO: remove the method ASA a cross-experiment event data store interface emerges
- Returns
- boolean
Definition at line 160 of file SGHiveMgrSvc.cxx.
163 std::string
key =
id.key();
164 key.erase(0,
key.find(
'+')+1);
166 if (
id.clid() == 0) {
170 std::string
cl =
id.fullKey();
171 cl.erase(
cl.find(
'/'),
cl.length());
◆ finalize()
StatusCode HiveMgrSvc::finalize |
( |
| ) |
|
|
overridevirtual |
Definition at line 219 of file SGHiveMgrSvc.cxx.
225 CHECK(
s.pEvtStore->finalize() );
226 s.pEvtStore->release();
229 return StatusCode::SUCCESS;
◆ freeSlots()
size_t HiveMgrSvc::freeSlots |
( |
| ) |
|
|
overridevirtual |
◆ freeStore()
StatusCode HiveMgrSvc::freeStore |
( |
size_t |
slotIndex | ) |
|
|
overridevirtual |
Free a store slot.
- Parameters
-
- Returns
- Status code indicating failure or success.
Definition at line 125 of file SGHiveMgrSvc.cxx.
127 std::scoped_lock lock{
m_mutex};
129 debug() <<
"Slot " << slotIndex <<
" is already free" <<
endmsg;
132 m_slots[slotIndex].eventNumber = -1;
136 return StatusCode::SUCCESS;
139 return StatusCode::FAILURE;
◆ getNumberOfStores()
size_t HiveMgrSvc::getNumberOfStores |
( |
| ) |
const |
|
overridevirtual |
Get the number of 'slots'.
- Returns
- Number of event stores allocated in the whiteboard
Definition at line 86 of file SGHiveMgrSvc.cxx.
◆ getPartitionNumber()
size_t HiveMgrSvc::getPartitionNumber |
( |
int |
evtNumber | ) |
const |
|
overridevirtual |
Get the slot number corresponding to a given event.
- Parameters
-
evtnumber | [IN] Event number |
- Returns
- slot number (npos to indicate an error).
- Parameters
-
evtNumber | [IN] Event number |
- Returns
- slot number (npos to indicate an error).
Definition at line 149 of file SGHiveMgrSvc.cxx.
153 return std::string::npos;
◆ initialize()
StatusCode HiveMgrSvc::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 181 of file SGHiveMgrSvc.cxx.
185 fatal() <<
"Unable to initialize base class" <<
endmsg;
186 return StatusCode::FAILURE;
190 fatal() <<
"Unable to get hive event store" <<
endmsg;
191 return StatusCode::FAILURE;
199 std::ostringstream oss;
202 child->initialize().isSuccess() &&
203 0 != (pSG =
dynamic_cast<SGImplSvc*
>(child)) )
208 fatal() <<
"Unable to clone event store " << oss.str() <<
endmsg;
209 return StatusCode::FAILURE;
214 Gaudi::Concurrency::ConcurrencyFlags::setNumConcEvents(
m_nSlots );
◆ selectStore()
StatusCode HiveMgrSvc::selectStore |
( |
size_t |
slotIndex | ) |
|
|
overridevirtual |
Activate an given 'slot' for all subsequent calls within the same thread id.
- Parameters
-
slot | [IN] Slot number (event slot) * |
- Returns
- Status code indicating failure or success.
Definition at line 46 of file SGHiveMgrSvc.cxx.
49 return StatusCode::SUCCESS;
◆ setNumberOfStores()
StatusCode HiveMgrSvc::setNumberOfStores |
( |
size_t |
slots | ) |
|
|
overridevirtual |
Set the number of 'slots'.
- Parameters
-
slot | [IN] Slot number (event slot) * |
- Returns
- Status code indicating failure or success.
Definition at line 72 of file SGHiveMgrSvc.cxx.
74 if(FSMState() == Gaudi::StateMachine::INITIALIZED) {
75 fatal() <<
"Too late to change the number of slots!" <<
endmsg;
76 return StatusCode::FAILURE;
81 Gaudi::Concurrency::ConcurrencyFlags::setNumConcEvents( slots );
82 return StatusCode::SUCCESS;
◆ setNumProcs()
void HiveMgrSvc::setNumProcs |
( |
size_t |
numProcs | ) |
|
|
staticprivate |
Set number of concurrent processes.
This can only be called by "friends" of this class. Its sole purpose is to have a common entry point within ATLAS to call the private methods of Gaudi::ConcurrencyFlags.
- Parameters
-
numProcs | [IN] Number of concurrent processes |
Definition at line 35 of file SGHiveMgrSvc.cxx.
37 Gaudi::Concurrency::ConcurrencyFlags::setNumProcs(numProcs);
◆ start()
StatusCode HiveMgrSvc::start |
( |
| ) |
|
|
overridevirtual |
◆ ::HltEventLoopMgr
◆ TestSGHiveMgrSvc
friend class TestSGHiveMgrSvc |
|
friend |
◆ m_freeSlots
std::atomic<size_t> SG::HiveMgrSvc::m_freeSlots {0} |
|
private |
◆ m_hiveStore
◆ m_mutex
std::mutex SG::HiveMgrSvc::m_mutex |
|
private |
◆ m_nSlots
size_t SG::HiveMgrSvc::m_nSlots |
|
private |
◆ m_slots
The documentation for this class was generated from the following files:
StatusCode clone(const IService *parent, const std::string &childName, Service *&child)
given a reference to a parent svc sets a reference to a cloned child