artdaq_mfextensions  v1_06_02
EHReceiver.cc
1 #include <time.h>
2 #include <sstream>
3 #include <string>
4 
5 #include <rms/RmsReceiver.h>
6 #include <rms/RmsSender.h>
7 #include <rms/base/RmsDestination.h>
8 #include <rms/provider/DDSConnection.h>
9 
10 #include <NovaTimingUtilities/TimingUtilities.h>
11 
12 #include <DAQMessages/ccpp_ErrorHandlerMessages.h>
13 
14 #include <boost/shared_ptr.hpp>
15 
16 using namespace gov::fnal::cd::rms;
17 using namespace novadaq::timeutils;
18 
19 int main()
20 {
21  // create the connection to RMS
22  boost::shared_ptr<provider::DDSConnection>
23  rmsConnection(new provider::DDSConnection("EHTestApplication", 0));
24 
25  // create the destination that represents where we will receive
26  // messages from
27  base::RmsDestination receiveDest("EHServerMailbox",
28  base::RmsDestination::EH_CHANNEL);
29 
30  // create a receiver with the connection object and destination
31  RmsReceiver<provider::DDSConnection,
32  errorhandlermessages::ErrorHandlerMessage>
33  requestReceiver(rmsConnection, receiveDest);
34 
35  while (1)
36  {
37  // wait for a message to arrive
38  std::cout << "Waiting for a message..." << std::endl;
39  errorhandlermessages::ErrorHandlerMessage EHMessage;
40  requestReceiver.receiveMessage(EHMessage);
41 
42  std::cout << std::endl
43  << "Received message!" << std::endl;
44  std::cout << convertNovaTimeToString(EHMessage.time) << std::endl
45  << EHMessage.error << std::endl
46  << std::endl;
47 
48  RmsSender<provider::DDSConnection, errorhandlermessages::ErrorHandlerReply>
49  requestSender(rmsConnection, receiveDest);
50 
51  errorhandlermessages::ErrorHandlerReply reply;
52  reply.action_complete = true;
53  requestSender.sendMessage(reply);
54  requestSender.close();
55  }
56 
57  // cleanup and exit
58  requestReceiver.close();
59  rmsConnection->close();
60 
61  return 0;
62 }