artdaq_mfextensions  v1_05_00
EHReceiver.cc
1 #include <time.h>
2 #include <string>
3 #include <sstream>
4 
5 #include <rms/provider/DDSConnection.h>
6 #include <rms/base/RmsDestination.h>
7 #include <rms/RmsReceiver.h>
8 #include <rms/RmsSender.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 
26  // create the destination that represents where we will receive
27  // messages from
28  base::RmsDestination receiveDest("EHServerMailbox",
29  base::RmsDestination::EH_CHANNEL);
30 
31 
32  // create a receiver with the connection object and destination
33  RmsReceiver<provider::DDSConnection,
34  errorhandlermessages::ErrorHandlerMessage>
35  requestReceiver(rmsConnection, receiveDest);
36 
37 
38 
39  while(1) {
40 
41  // wait for a message to arrive
42  std::cout << "Waiting for a message..." << std::endl;
43  errorhandlermessages::ErrorHandlerMessage EHMessage;
44  requestReceiver.receiveMessage(EHMessage);
45 
46  std::cout << std::endl << "Received message!" << std::endl;
47  std::cout << convertNovaTimeToString(EHMessage.time) << std::endl
48  << EHMessage.error << std::endl << std::endl;
49 
50 
51 
52  RmsSender<provider::DDSConnection,errorhandlermessages::ErrorHandlerReply>
53  requestSender(rmsConnection,receiveDest);
54 
55  errorhandlermessages::ErrorHandlerReply reply;
56  reply.action_complete = true;
57  requestSender.sendMessage(reply);
58  requestSender.close();
59 
60  }
61 
62 
63  // cleanup and exit
64  requestReceiver.close();
65  rmsConnection->close();
66 
67  return 0;
68 }