artdaq::SharedMemoryEventManager Class Reference

The SharedMemoryEventManager is a SharedMemoryManger which tracks events as they are built. More...

#include <artdaq/DAQrate/SharedMemoryEventManager.hh>

List of all members.

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.

Public Member Functions

 SharedMemoryEventManager (fhicl::ParameterSet pset, fhicl::ParameterSet art_pset)
 SharedMemoryEventManager Constructor.
virtual ~SharedMemoryEventManager ()
 SharedMemoryEventManager Destructor.
bool AddFragment (FragmentPtr frag, size_t timeout_usec, FragmentPtr &outfrag)
 Copy a Fragment into the SharedMemoryEventManager.
RawDataType * WriteFragmentHeader (detail::RawFragmentHeader frag, bool dropIfNoBuffersAvailable=false)
 Get a pointer to a reserved memory area for the given Fragment header.
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.
size_t GetIncompleteEventCount ()
 Returns the number of buffers which contain data but are not yet complete.
size_t GetPendingEventCount ()
 Returns the number of events which are complete but waiting on lower sequenced events to finish.
size_t GetLockedBufferCount ()
 Returns the number of buffers currently owned by this manager.
size_t GetArtEventCount ()
 Returns the number of events sent to art this subrun.
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.
size_t GetFragmentCountInBuffer (int buffer, Fragment::type_t type=Fragment::InvalidFragmentType)
 Get the count of Fragments of a given type in a buffer.
void RunArt (std::shared_ptr< art_config_file > config_file, 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.
void ShutdownArtProcesses (std::set< pid_t > pids)
 Shutdown a set of art processes.
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.
bool endOfData ()
 Indicate that the end of input has been reached to the art processes.
void startRun (run_id_t runID)
 Start a Run.
void startSubrun ()
 Start a new Subrun, incrementing the subrun number.
run_id_t runID () const
 Get the current Run number.
subrun_id_t subrunID () const
 Get the current subrun number.
bool endRun ()
 Send an EndOfRunFragment to the art thread.
bool endSubrun ()
 Send an EndOfSubRunFragment to the art thread.
void rolloverSubrun (sequence_id_t boundary)
 Rollover the subrun after the specified event.
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.
void setOverwrite (bool overwrite)
 Set the overwrite flag (non-reliable data transfer) for the Shared Memory.
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.
RawDataType * GetDroppedDataAddress ()
 Gets the address of the "dropped data" fragment. Used for testing.

Detailed Description

The SharedMemoryEventManager is a SharedMemoryManger which tracks events as they are built.

Definition at line 72 of file SharedMemoryEventManager.hh.


Constructor & Destructor Documentation

artdaq::SharedMemoryEventManager::SharedMemoryEventManager ( fhicl::ParameterSet  pset,
fhicl::ParameterSet  art_pset 
)

SharedMemoryEventManager Constructor.

Parameters:
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 11 of file SharedMemoryEventManager.cc.


Member Function Documentation

bool artdaq::SharedMemoryEventManager::AddFragment ( FragmentPtr  frag,
size_t  timeout_usec,
FragmentPtr &  outfrag 
)

Copy a Fragment into the SharedMemoryEventManager.

Parameters:
frag FragmentPtr object
timeout_usec Timeout for adding Fragment to the Shared Memory
[out] outfrag Rejected Fragment if timeout occurs
Returns:
Whether the Fragment was successfully added

Definition at line 138 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.

Parameters:
frag Fragment that is now completely in the buffer.

Definition at line 216 of file SharedMemoryEventManager.cc.

bool artdaq::SharedMemoryEventManager::endOfData (  ) 

Indicate that the end of input has been reached to the art processes.

Returns:
True if the end proceeded correctly

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 556 of file SharedMemoryEventManager.cc.

bool artdaq::SharedMemoryEventManager::endRun (  ) 

Send an EndOfRunFragment to the art thread.

Returns:
True if enqueue successful

Definition at line 695 of file SharedMemoryEventManager.cc.

bool artdaq::SharedMemoryEventManager::endSubrun (  ) 

Send an EndOfSubRunFragment to the art thread.

Returns:
True if enqueue successful

Definition at line 715 of file SharedMemoryEventManager.cc.

size_t artdaq::SharedMemoryEventManager::GetArtEventCount (  )  [inline]

Returns the number of events sent to art this subrun.

Returns:
The number of events sent to art this subrun

Definition at line 210 of file SharedMemoryEventManager.hh.

uint32_t artdaq::SharedMemoryEventManager::GetBroadcastKey (  )  [inline]

Gets the shared memory key of the broadcast SharedMemoryManager.

Returns:
The shared memory key of the broadcast SharedMemoryManager

Definition at line 336 of file SharedMemoryEventManager.hh.

RawDataType* artdaq::SharedMemoryEventManager::GetDroppedDataAddress (  )  [inline]

Gets the address of the "dropped data" fragment. Used for testing.

Returns:
Pointer to the data payload of the "dropped data" fragment

Definition at line 342 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.

Parameters:
seqID Sequence ID of Fragments
type Type of fragments to count. Use InvalidFragmentType to count all fragments (default)
Returns:
Number of Fragments in event of given type

Definition at line 253 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.

Parameters:
buffer Buffer to count
type Type of fragments to count. Use InvalidFragmentType to count all fragments (default)
Returns:
Number of Fragments in buffer of given type

Definition at line 258 of file SharedMemoryEventManager.cc.

size_t artdaq::SharedMemoryEventManager::GetIncompleteEventCount (  )  [inline]

Returns the number of buffers which contain data but are not yet complete.

Returns:
The number of buffers which contain data but are not yet complete

Definition at line 192 of file SharedMemoryEventManager.hh.

size_t artdaq::SharedMemoryEventManager::GetLockedBufferCount (  )  [inline]

Returns the number of buffers currently owned by this manager.

Returns:
The number of buffers currently owned by this manager

Definition at line 204 of file SharedMemoryEventManager.hh.

size_t artdaq::SharedMemoryEventManager::GetPendingEventCount (  )  [inline]

Returns the number of events which are complete but waiting on lower sequenced events to finish.

Returns:
The number of events which are complete but waiting on lower sequenced events to finish

Definition at line 198 of file SharedMemoryEventManager.hh.

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.

Parameters:
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 528 of file SharedMemoryEventManager.cc.

void artdaq::SharedMemoryEventManager::rolloverSubrun ( sequence_id_t  boundary  ) 

Rollover the subrun after the specified event.

Parameters:
boundary sequence ID of the boundary (Event with seqID == boundary will be in new subrun)

Definition at line 738 of file SharedMemoryEventManager.cc.

run_id_t artdaq::SharedMemoryEventManager::runID (  )  const [inline]

Get the current Run number.

Returns:
The current Run number

Definition at line 284 of file SharedMemoryEventManager.hh.

void artdaq::SharedMemoryEventManager::setOverwrite ( bool  overwrite  )  [inline]

Set the overwrite flag (non-reliable data transfer) for the Shared Memory.

Parameters:
overwrite Whether to allow the writer to overwrite data that has not yet been read

Definition at line 325 of file SharedMemoryEventManager.hh.

void artdaq::SharedMemoryEventManager::setRequestMode ( detail::RequestMessageMode  mode  )  [inline]

Set the RequestMessageMode for all outgoing data requests.

Parameters:
mode Mode to set

Definition at line 319 of file SharedMemoryEventManager.hh.

void artdaq::SharedMemoryEventManager::ShutdownArtProcesses ( std::set< pid_t >  pids  ) 

Shutdown a set of art processes.

Parameters:
pids PIDs of the art processes

Definition at line 424 of file SharedMemoryEventManager.cc.

pid_t artdaq::SharedMemoryEventManager::StartArtProcess ( fhicl::ParameterSet  pset  ) 

Start one art process.

Parameters:
pset ParameterSet to send to this art process
Returns:
pid_t of the started process

Definition at line 379 of file SharedMemoryEventManager.cc.

void artdaq::SharedMemoryEventManager::startRun ( run_id_t  runID  ) 

Start a Run.

Parameters:
runID Run number of the new run

Definition at line 656 of file SharedMemoryEventManager.cc.

subrun_id_t artdaq::SharedMemoryEventManager::subrunID (  )  const [inline]

Get the current subrun number.

Returns:
The current subrun number

Definition at line 290 of file SharedMemoryEventManager.hh.

artdaq::RawDataType * artdaq::SharedMemoryEventManager::WriteFragmentHeader ( detail::RawFragmentHeader  frag,
bool  dropIfNoBuffersAvailable = false 
)

Get a pointer to a reserved memory area for the given Fragment header.

Parameters:
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)
Returns:
Pointer to memory location for Fragment body (Header is copied into buffer here)

Definition at line 158 of file SharedMemoryEventManager.cc.


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

Generated on 6 Jun 2018 for artdaq by  doxygen 1.6.1