artdaq  v3_12_02
requestReceiver.cc
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 int main(int argc, char* argv[])
11 {
12  artdaq::configureMessageFacility("requestReceiver");
13 
14  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  int rc = 0;
17 
18  fhicl::ParameterSet tempPset;
19  if (pset.has_key("daq"))
20  {
21  fhicl::ParameterSet daqPset = pset.get<fhicl::ParameterSet>("daq");
22  for (auto& name : daqPset.get_pset_names())
23  {
24  auto thisPset = daqPset.get<fhicl::ParameterSet>(name);
25  if (thisPset.has_key("receive_requests"))
26  {
27  tempPset = thisPset;
28  }
29  }
30  }
31  else if (pset.has_key("request_receiver"))
32  {
33  tempPset = pset.get<fhicl::ParameterSet>("request_receiver");
34  }
35  else
36  {
37  tempPset = pset;
38  }
39 
40  auto buffer = std::make_shared<artdaq::RequestBuffer>(tempPset.get<artdaq::Fragment::sequence_id_t>("request_increment", 1));
41  artdaq::RequestReceiver recvr(tempPset, buffer);
42  recvr.startRequestReception();
43 
44  while (true)
45  {
46  for (auto req : buffer->GetAndClearRequests())
47  {
48  TLOG(TLVL_INFO) << "Received Request for Sequence ID " << req.first << ", timestamp " << req.second;
49  }
50  usleep(10000);
51  }
52 
53  return rc;
54 }
Receive data requests and make them available to CommandableFragmentGenerator or other interested par...