1 #define TRACE_NAME "SimpleMemoryReader"
2 #include "artdaq-core/Core/SimpleMemoryReader.hh"
18 std::istringstream ins(argv[1]);
25 catch (std::string
const& msg)
27 std::cerr <<
"SimpleMemoryReaderApp failed: " << msg;
39 , expectedEventCount_(eec)
41 TLOG(50) <<
"ctor done (after queue_.setReaderIsReady())";
46 std::size_t eventsSeen = 0;
47 auto doPrint = getenv(
"VERBOSE_QUEUE_READING");
50 bool keep_looping =
true;
51 bool got_event =
false;
55 got_event = incoming_events_->ReadyForRead();
58 TLOG(TLVL_INFO) <<
"InputFailure: Reading timed out in SharedMemoryReader::readNext()";
69 auto evtHeader = incoming_events_->ReadHeader(errflag);
74 auto fragmentTypes = incoming_events_->GetFragmentTypes(errflag);
79 if (fragmentTypes.empty())
81 TLOG(TLVL_ERROR) <<
"Event has no Fragments! Aborting!";
82 incoming_events_->ReleaseBuffer();
85 auto firstFragmentType = *fragmentTypes.begin();
94 TLOG(TLVL_DEBUG) <<
"Received shutdown message, returning false";
95 incoming_events_->ReleaseBuffer();
101 if (doPrint !=
nullptr) { std::cout << evt << std::endl; }
102 incoming_events_->ReleaseBuffer();
104 if ((expectedEventCount_ != 0u) && eventsSeen != expectedEventCount_)
106 throw cet::exception(
"SimpleMemoryReader")
107 <<
"Wrong number of events in SimpleMemoryReader ("
108 << eventsSeen <<
" != " << expectedEventCount_ <<
").";
void run()
Run until a null pointer is popped off of the RawEventQueue. Throws an excpetion if expectedEventCoun...
static constexpr type_t EndOfDataFragmentType
Copy EndOfDataFragmentType from RawFragmentHeader.
SharedMemoryEventReceiver can receive events (as written by SharedMemoryEventManager) from Shared Mem...
SimpleMemoryReader will continue to read RawEvent objects off the queue until it encounters a null po...
SimpleMemoryReader(uint32_t shm_key, uint32_t broadcast_key, std::size_t eec=0)
Constructs a SimpleMemoryReader.
int SimpleMemoryReaderApp(int argc, char **argv)
An application which pops items off a RawEventQueue using the SimpleMemoryReader. ...
RawEvent is the artdaq view of a generic event, containing a header and zero or more Fragments...