artdaq_mfextensions  v1_06_02
EHSender.cc
1 #include <time.h>
2 #include <iostream>
3 #include <sstream>
4 #include <string>
5 
6 #include <rms/RmsReceiver.h>
7 #include <rms/RmsSender.h>
8 #include <rms/base/RmsDestination.h>
9 #include <rms/provider/DDSConnection.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 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 sendDest("EHServerMailbox",
28  base::RmsDestination::EH_CHANNEL);
29 
30  RmsSender<provider::DDSConnection, errorhandlermessages::ErrorHandlerMessage>
31  requestSender(rmsConnection, sendDest);
32 
33  std::cout << "Sending Message on EH_CHANNEL...." << std::endl;
34 
35  errorhandlermessages::ErrorHandlerMessage message;
36 
37  timeval now;
38  gettimeofday(&now, 0);
39  uint64_t ts_now;
40  novadaq::timeutils::convertUnixTimeToNovaTime(now, ts_now);
41 
42  message.time = ts_now;
43  message.error = 1;
44  requestSender.sendMessage(message);
45  std::cout << "Sent Message on EH_CHANNEL...." << std::endl;
46 
47  // listen for a reply
48  RmsReceiver<provider::DDSConnection,
49  errorhandlermessages::ErrorHandlerReply>
50  requestReceiver(rmsConnection, sendDest);
51 
52  while (1)
53  {
54  std::cout << "Waiting for a reply..." << std::endl;
55  errorhandlermessages::ErrorHandlerReply reply;
56  requestReceiver.receiveMessage(reply);
57 
58  std::cout << "Got reply: "
59  << (int)reply.action_complete << std::endl;
60  std::cout << "Exiting..." << std::endl;
61 
62  break;
63  }
64 
65  // clean up
66  requestReceiver.close();
67  requestSender.close();
68  rmsConnection->close();
69 
70  return 0;
71 }