artdaq_mfextensions  v1_05_00
EHSender.cc
1 #include <time.h>
2 #include <string>
3 #include <sstream>
4 #include <iostream>
5 
6 #include <rms/provider/DDSConnection.h>
7 #include <rms/base/RmsDestination.h>
8 #include <rms/RmsReceiver.h>
9 #include <rms/RmsSender.h>
10 
11 #include <NovaTimingUtilities/TimingUtilities.h>
12 
13 #include <DAQMessages/ccpp_ErrorHandlerMessages.h>
14 
15 #include <boost/shared_ptr.hpp>
16 
17 using namespace gov::fnal::cd::rms;
18 
19 
20 int main() {
21 
22  // create the connection to RMS
23  boost::shared_ptr<provider::DDSConnection>
24  rmsConnection(new provider::DDSConnection("EHTestApplication",0));
25 
26 
27  // create the destination that represents where we will receive
28  // messages from
29  base::RmsDestination sendDest("EHServerMailbox",
30  base::RmsDestination::EH_CHANNEL);
31 
32 
33  RmsSender<provider::DDSConnection,errorhandlermessages::ErrorHandlerMessage>
34  requestSender(rmsConnection,sendDest);
35 
36  std::cout << "Sending Message on EH_CHANNEL...." << std::endl;
37 
38  errorhandlermessages::ErrorHandlerMessage message;
39 
40 
41  timeval now;
42  gettimeofday(&now,0);
43  uint64_t ts_now;
44  novadaq::timeutils::convertUnixTimeToNovaTime(now,ts_now);
45 
46  message.time = ts_now;
47  message.error = 1;
48  requestSender.sendMessage(message);
49  std::cout << "Sent Message on EH_CHANNEL...." << std::endl;
50 
51 
52  // listen for a reply
53  RmsReceiver<provider::DDSConnection,
54  errorhandlermessages::ErrorHandlerReply>
55  requestReceiver(rmsConnection, sendDest);
56 
57  while(1) {
58 
59  std::cout << "Waiting for a reply..." << std::endl;
60  errorhandlermessages::ErrorHandlerReply reply;
61  requestReceiver.receiveMessage(reply);
62 
63  std::cout << "Got reply: "
64  << (int)reply.action_complete << std::endl;
65  std::cout << "Exiting..." << std::endl;
66 
67  break;
68 
69  }
70 
71 
72 
73  // clean up
74  requestReceiver.close();
75  requestSender.close();
76  rmsConnection->close();
77 
78  return 0;
79 }