artdaq
v3_09_01
|
The SharedMemoryEventManager is a SharedMemoryManger which tracks events as they are built. More...
#include <artdaq/DAQrate/SharedMemoryEventManager.hh>
Classes | |
struct | Config |
Configuration of the SharedMemoryEventManager. May be used for parameter validation More... | |
Public Types | |
typedef RawEvent::run_id_t | run_id_t |
Copy RawEvent::run_id_t into local scope. | |
typedef RawEvent::subrun_id_t | subrun_id_t |
Copy RawEvent::subrun_id_t into local scope. | |
typedef Fragment::sequence_id_t | sequence_id_t |
Copy Fragment::sequence_id_t into local scope. | |
typedef std::map < sequence_id_t, RawEvent_ptr > | EventMap |
An EventMap is a map of RawEvent_ptr objects, keyed by sequence ID. | |
using | Parameters = fhicl::WrappedTable< Config > |
Used for ParameterSet validation (if desired) | |
Public Member Functions | |
SharedMemoryEventManager (const fhicl::ParameterSet &pset, fhicl::ParameterSet art_pset) | |
SharedMemoryEventManager Constructor. More... | |
virtual | ~SharedMemoryEventManager () |
SharedMemoryEventManager Destructor. | |
bool | AddFragment (FragmentPtr frag, size_t timeout_usec, FragmentPtr &outfrag) |
Copy a Fragment into the SharedMemoryEventManager. More... | |
RawDataType * | WriteFragmentHeader (detail::RawFragmentHeader frag, bool dropIfNoBuffersAvailable=false) |
Get a pointer to a reserved memory area for the given Fragment header. More... | |
void | DoneWritingFragment (detail::RawFragmentHeader frag) |
Used to indicate that the given Fragment is now completely in the buffer. Will check for buffer completeness, and unset the pending flag. More... | |
size_t | GetIncompleteEventCount () |
Returns the number of buffers which contain data but are not yet complete. More... | |
size_t | GetPendingEventCount () |
Returns the number of events which are complete but waiting on lower sequenced events to finish. More... | |
size_t | GetLockedBufferCount () |
Returns the number of buffers currently owned by this manager. More... | |
size_t | GetArtEventCount () |
Returns the number of events sent to art this run. More... | |
size_t | GetFragmentCount (Fragment::sequence_id_t seqID, Fragment::type_t type=Fragment::InvalidFragmentType) |
Get the count of Fragments of a given type in an event. More... | |
size_t | GetFragmentCountInBuffer (int buffer, Fragment::type_t type=Fragment::InvalidFragmentType) |
Get the count of Fragments of a given type in a buffer. More... | |
void | RunArt (const std::shared_ptr< art_config_file > &config_file, const std::shared_ptr< std::atomic< pid_t >> &pid_out) |
Run an art instance, recording the return codes and restarting it until the end flag is raised. | |
void | StartArt () |
Start all the art processes. | |
pid_t | StartArtProcess (fhicl::ParameterSet pset) |
Start one art process. More... | |
void | ShutdownArtProcesses (std::set< pid_t > &pids) |
Shutdown a set of art processes. More... | |
void | ReconfigureArt (fhicl::ParameterSet art_pset, run_id_t newRun=0, int n_art_processes=-1) |
Restart all art processes, using the given fhicl code to configure the new art processes. More... | |
bool | endOfData () |
Indicate that the end of input has been reached to the art processes. More... | |
void | startRun (run_id_t runID) |
Start a Run. More... | |
run_id_t | runID () const |
Get the current Run number. More... | |
bool | endRun () |
Send an EndOfRunFragment to the art thread. More... | |
void | rolloverSubrun (sequence_id_t boundary, subrun_id_t subrun) |
Rollover the subrun after the specified event. More... | |
void | rolloverSubrun () |
Add a subrun transition immediately after the highest currently define sequence ID. | |
void | sendMetrics () |
Send metrics to the MetricManager, if one has been instantiated in the application. | |
void | setRequestMode (detail::RequestMessageMode mode) |
Set the RequestMessageMode for all outgoing data requests. More... | |
void | setOverwrite (bool overwrite) |
Set the overwrite flag (non-reliable data transfer) for the Shared Memory. More... | |
void | AddInitFragment (FragmentPtr &frag) |
Set the stored Init fragment, if one has not yet been set already. | |
uint32_t | GetBroadcastKey () |
Gets the shared memory key of the broadcast SharedMemoryManager. More... | |
RawDataType * | GetDroppedDataAddress (Fragment::fragment_id_t frag) |
Gets the address of the "dropped data" fragment. Used for testing. More... | |
void | UpdateArtConfiguration (fhicl::ParameterSet art_pset) |
Updates the internally-stored copy of the art configuration. More... | |
void | CheckPendingBuffers () |
Check for buffers which are ready to be marked incomplete and released to art and issue tokens for any buffers which are avaialble. | |
subrun_id_t | GetSubrunForSequenceID (Fragment::sequence_id_t seqID) |
Get the subrun number that the given Sequence ID would be assigned to. More... | |
subrun_id_t | GetCurrentSubrun () |
Get the current subrun number (Gets the last defined subrun) More... | |
Static Public Attributes | |
static const std::string | FRAGMENTS_RECEIVED_STAT_KEY |
Key for Fragments Received MonitoredQuantity. | |
static const std::string | EVENTS_RELEASED_STAT_KEY |
Key for the Events Released MonitoredQuantity. | |
The SharedMemoryEventManager is a SharedMemoryManger which tracks events as they are built.
Definition at line 92 of file SharedMemoryEventManager.hh.
artdaq::SharedMemoryEventManager::SharedMemoryEventManager | ( | const fhicl::ParameterSet & | pset, |
fhicl::ParameterSet | art_pset | ||
) |
SharedMemoryEventManager Constructor.
pset | ParameterSet used to configure SharedMemoryEventManager. See artdaq::SharedMemoryEventManager::Config for description of parameters |
art_pset | ParameterSet used to configure art. See art::Config for description of expected document format |
Definition at line 23 of file SharedMemoryEventManager.cc.
bool artdaq::SharedMemoryEventManager::AddFragment | ( | FragmentPtr | frag, |
size_t | timeout_usec, | ||
FragmentPtr & | outfrag | ||
) |
Copy a Fragment into the SharedMemoryEventManager.
frag | FragmentPtr object | |
timeout_usec | Timeout for adding Fragment to the Shared Memory | |
[out] | outfrag | Rejected Fragment if timeout occurs |
Definition at line 174 of file SharedMemoryEventManager.cc.
void artdaq::SharedMemoryEventManager::DoneWritingFragment | ( | detail::RawFragmentHeader | frag | ) |
Used to indicate that the given Fragment is now completely in the buffer. Will check for buffer completeness, and unset the pending flag.
frag | Fragment that is now completely in the buffer. |
Definition at line 278 of file SharedMemoryEventManager.cc.
bool artdaq::SharedMemoryEventManager::endOfData | ( | ) |
Indicate that the end of input has been reached to the art processes.
Put the end-of-data marker onto the RawEvent queue (if possible), wait for the reader function to exit, and fill in the reader return value. This scenario returns true. If the end-of-data marker can not be pushed onto the RawEvent queue, false is returned.
Definition at line 721 of file SharedMemoryEventManager.cc.
bool artdaq::SharedMemoryEventManager::endRun | ( | ) |
Send an EndOfRunFragment to the art thread.
Definition at line 849 of file SharedMemoryEventManager.cc.
|
inline |
Returns the number of events sent to art this run.
Definition at line 236 of file SharedMemoryEventManager.hh.
|
inline |
Gets the shared memory key of the broadcast SharedMemoryManager.
Definition at line 354 of file SharedMemoryEventManager.hh.
|
inline |
Get the current subrun number (Gets the last defined subrun)
Definition at line 397 of file SharedMemoryEventManager.hh.
|
inline |
Gets the address of the "dropped data" fragment. Used for testing.
frag | Fragment ID to get "dropped data" for |
Definition at line 361 of file SharedMemoryEventManager.hh.
size_t artdaq::SharedMemoryEventManager::GetFragmentCount | ( | Fragment::sequence_id_t | seqID, |
Fragment::type_t | type = Fragment::InvalidFragmentType |
||
) |
Get the count of Fragments of a given type in an event.
seqID | Sequence ID of Fragments |
type | Type of fragments to count. Use InvalidFragmentType to count all fragments (default) |
Definition at line 343 of file SharedMemoryEventManager.cc.
size_t artdaq::SharedMemoryEventManager::GetFragmentCountInBuffer | ( | int | buffer, |
Fragment::type_t | type = Fragment::InvalidFragmentType |
||
) |
Get the count of Fragments of a given type in a buffer.
buffer | Buffer to count |
type | Type of fragments to count. Use InvalidFragmentType to count all fragments (default) |
Definition at line 348 of file SharedMemoryEventManager.cc.
|
inline |
Returns the number of buffers which contain data but are not yet complete.
Definition at line 218 of file SharedMemoryEventManager.hh.
|
inline |
Returns the number of buffers currently owned by this manager.
Definition at line 230 of file SharedMemoryEventManager.hh.
|
inline |
Returns the number of events which are complete but waiting on lower sequenced events to finish.
Definition at line 224 of file SharedMemoryEventManager.hh.
artdaq::SharedMemoryEventManager::subrun_id_t artdaq::SharedMemoryEventManager::GetSubrunForSequenceID | ( | Fragment::sequence_id_t | seqID | ) |
Get the subrun number that the given Sequence ID would be assigned to.
seqID | Sequence ID to check |
Definition at line 998 of file SharedMemoryEventManager.cc.
void artdaq::SharedMemoryEventManager::ReconfigureArt | ( | fhicl::ParameterSet | art_pset, |
run_id_t | newRun = 0 , |
||
int | n_art_processes = -1 |
||
) |
Restart all art processes, using the given fhicl code to configure the new art processes.
art_pset | ParameterSet used to configure art |
newRun | New Run number for reconfigured art |
n_art_processes | Number of art processes to start, -1 (default) leaves the number unchanged |
Definition at line 690 of file SharedMemoryEventManager.cc.
void artdaq::SharedMemoryEventManager::rolloverSubrun | ( | sequence_id_t | boundary, |
subrun_id_t | subrun | ||
) |
Rollover the subrun after the specified event.
boundary | sequence ID of the boundary (Event with seqID == boundary will be in new subrun) |
subrun | Subrun number of subrun after boundary |
Definition at line 877 of file SharedMemoryEventManager.cc.
|
inline |
Get the current Run number.
Definition at line 305 of file SharedMemoryEventManager.hh.
|
inline |
Set the overwrite flag (non-reliable data transfer) for the Shared Memory.
overwrite | Whether to allow the writer to overwrite data that has not yet been read |
Definition at line 343 of file SharedMemoryEventManager.hh.
|
inline |
Set the RequestMessageMode for all outgoing data requests.
mode | Mode to set |
Definition at line 334 of file SharedMemoryEventManager.hh.
void artdaq::SharedMemoryEventManager::ShutdownArtProcesses | ( | std::set< pid_t > & | pids | ) |
Shutdown a set of art processes.
pids | PIDs of the art processes |
Definition at line 554 of file SharedMemoryEventManager.cc.
pid_t artdaq::SharedMemoryEventManager::StartArtProcess | ( | fhicl::ParameterSet | pset | ) |
Start one art process.
pset | ParameterSet to send to this art process |
Definition at line 512 of file SharedMemoryEventManager.cc.
void artdaq::SharedMemoryEventManager::startRun | ( | run_id_t | runID | ) |
Start a Run.
runID | Run number of the new run |
Definition at line 811 of file SharedMemoryEventManager.cc.
void artdaq::SharedMemoryEventManager::UpdateArtConfiguration | ( | fhicl::ParameterSet | art_pset | ) |
Updates the internally-stored copy of the art configuration.
art_pset | ParameterSet used to configure art |
This method updates the internally-stored copy of the art configuration, but it does not restart art processes. So, if this method is called while art processes are running, it will have no effect until the next restart, such as the next Start of run. Typically, this method is intended to be called between runs, when no art processes are running.
Definition at line 1364 of file SharedMemoryEventManager.cc.
artdaq::RawDataType * artdaq::SharedMemoryEventManager::WriteFragmentHeader | ( | detail::RawFragmentHeader | frag, |
bool | dropIfNoBuffersAvailable = false |
||
) |
Get a pointer to a reserved memory area for the given Fragment header.
frag | Fragment header (contains sequence ID and size information) |
dropIfNoBuffersAvailable | Whether to drop the fragment (instead of returning nullptr) when no buffers are available (Default: false) |
Definition at line 197 of file SharedMemoryEventManager.cc.