1 #include "artdaq-core/Core/SimpleMemoryReader.hh"
19 std::istringstream ins(argv[1]);
26 catch (std::string
const& msg)
28 std::cerr <<
"SimpleMemoryReaderApp failed: "
41 , expectedEventCount_(eec)
43 TLOG_ARB(50,
"SimpleMemoryReader") <<
"ctor done (after queue_.setReaderIsReady())" << TLOG_ENDL;
48 std::size_t eventsSeen = 0;
49 auto doPrint = getenv(
"VERBOSE_QUEUE_READING");
52 bool keep_looping =
true;
53 bool got_event =
false;
57 got_event = incoming_events_->ReadyForRead();
60 TLOG_INFO(
"SharedMemoryReader")
61 <<
"InputFailure: Reading timed out in SharedMemoryReader::readNext()" << TLOG_ENDL;
66 if (!got_event)
break;
69 auto evtHeader = incoming_events_->ReadHeader(errflag);
71 auto fragmentTypes = incoming_events_->GetFragmentTypes(errflag);
73 if (fragmentTypes.size() == 0)
75 TLOG_ERROR(
"SharedMemoryReader") <<
"Event has no Fragments! Aborting!" << TLOG_ENDL;
76 incoming_events_->ReleaseBuffer();
79 auto firstFragmentType = *fragmentTypes.begin();
88 TLOG_DEBUG(
"SharedMemoryReader") <<
"Received shutdown message, returning false" << TLOG_ENDL;
89 incoming_events_->ReleaseBuffer();
95 if (doPrint) { std::cout << evt << std::endl; }
96 incoming_events_->ReleaseBuffer();
99 if (expectedEventCount_ && eventsSeen != expectedEventCount_)
101 std::ostringstream os;
102 os <<
"Wrong number of events in SimpleMemoryReader ("
103 << eventsSeen <<
" != " << expectedEventCount_ <<
").\n";
void run()
Run until a null pointer is popped off of the RawEventQueue. Throws an excpetion if expectedEventCoun...
SimpleMemoryReader(uint32_t shm_key, uint32_t broadcast_key, std::size_t expectedEventCount=0)
Constructs a SimpleMemoryReader.
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...
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...