artdaq
v3_04_00
|
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 > |
Public Member Functions | |
SharedMemoryEventManager (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 (std::shared_ptr< art_config_file > config_file, 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 | SetInitFragment (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 () |
The SharedMemoryEventManager is a SharedMemoryManger which tracks events as they are built.
Definition at line 88 of file SharedMemoryEventManager.hh.
artdaq::SharedMemoryEventManager::SharedMemoryEventManager | ( | 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 15 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 144 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 242 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 620 of file SharedMemoryEventManager.cc.
bool artdaq::SharedMemoryEventManager::endRun | ( | ) |
Send an EndOfRunFragment to the art thread.
Definition at line 763 of file SharedMemoryEventManager.cc.
|
inline |
Returns the number of events sent to art this run.
Definition at line 228 of file SharedMemoryEventManager.hh.
|
inline |
Gets the shared memory key of the broadcast SharedMemoryManager.
Definition at line 346 of file SharedMemoryEventManager.hh.
|
inline |
Gets the address of the "dropped data" fragment. Used for testing.
Definition at line 352 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 292 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 297 of file SharedMemoryEventManager.cc.
|
inline |
Returns the number of buffers which contain data but are not yet complete.
Definition at line 210 of file SharedMemoryEventManager.hh.
|
inline |
Returns the number of buffers currently owned by this manager.
Definition at line 222 of file SharedMemoryEventManager.hh.
|
inline |
Returns the number of events which are complete but waiting on lower sequenced events to finish.
Definition at line 216 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 883 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 592 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 786 of file SharedMemoryEventManager.cc.
|
inline |
Get the current Run number.
Definition at line 297 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 335 of file SharedMemoryEventManager.hh.
|
inline |
Set the RequestMessageMode for all outgoing data requests.
mode | Mode to set |
Definition at line 326 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 475 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 431 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 728 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 1197 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 164 of file SharedMemoryEventManager.cc.