Line data Source code
1 : #define TRACE_NAME "requestReceiver"
2 :
3 : #include <boost/program_options.hpp>
4 :
5 : #include "artdaq-core/Utilities/configureMessageFacility.hh"
6 : #include "artdaq/Application/LoadParameterSet.hh"
7 : #include "artdaq/DAQrate/RequestBuffer.hh"
8 : #include "artdaq/DAQrate/detail/RequestReceiver.hh"
9 :
10 0 : int main(int argc, char* argv[])
11 : {
12 0 : artdaq::configureMessageFacility("requestReceiver");
13 :
14 0 : auto pset = LoadParameterSet<artdaq::RequestReceiver::Config>(argc, argv, "receiver", "This is a simple application which listens for Data Request messages and prints their contents");
15 :
16 0 : int rc = 0;
17 :
18 0 : fhicl::ParameterSet tempPset;
19 0 : if (pset.has_key("daq"))
20 : {
21 0 : fhicl::ParameterSet daqPset = pset.get<fhicl::ParameterSet>("daq");
22 0 : for (auto& name : daqPset.get_pset_names())
23 : {
24 0 : auto thisPset = daqPset.get<fhicl::ParameterSet>(name);
25 0 : if (thisPset.has_key("receive_requests"))
26 : {
27 0 : tempPset = thisPset;
28 : }
29 0 : }
30 0 : }
31 0 : else if (pset.has_key("request_receiver"))
32 : {
33 0 : tempPset = pset.get<fhicl::ParameterSet>("request_receiver");
34 : }
35 : else
36 : {
37 0 : tempPset = pset;
38 : }
39 :
40 0 : auto buffer = std::make_shared<artdaq::RequestBuffer>(tempPset.get<artdaq::Fragment::sequence_id_t>("request_increment", 1));
41 0 : artdaq::RequestReceiver recvr(tempPset, buffer);
42 0 : recvr.startRequestReception();
43 :
44 : while (true)
45 : {
46 0 : for (auto req : buffer->GetAndClearRequests())
47 : {
48 0 : TLOG(TLVL_INFO) << "Received Request for Sequence ID " << req.first << ", timestamp " << req.second;
49 0 : }
50 0 : usleep(10000);
51 0 : }
52 :
53 : return rc;
54 0 : }
|