RTC Toolkit  0.1.0-alpha
udpReceiver.hpp
Go to the documentation of this file.
1 
8 #ifndef RTCTK_REUSABLECOMPONENT_TELREPUB_UDPRECEIVER_HPP_
9 #define RTCTK_REUSABLECOMPONENT_TELREPUB_UDPRECEIVER_HPP_
10 
11 #include <boost/asio.hpp>
12 #include <thread>
13 #include <iostream>
14 #include <boost/array.hpp>
15 #include <boost/function.hpp>
16 
17 #include "mudpiProcessor.hpp"
18 
19 
20 using boost::asio::ip::address;
21 using boost::asio::ip::udp;
22 
23 namespace rtctk::telRepub {
24 
28 int const DATAGRAM_SIZE = 9500;
29 
33 char const EXIT_MSG[] = "Exit";
34 
35 
40 {
41  std::string m_host_name;
42  int m_port;
43 
44  boost::asio::io_service io_service;
45  udp::socket m_socket{io_service};
46  udp::endpoint remote_endpoint;
47 
48  bool m_loop;
49  bool m_exitThread;
50 
51  boost::mutex m_mutex;
52  boost::condition_variable m_enabled;
53 
54  char m_recvBuffer[DATAGRAM_SIZE];
55  mudpi::mudpiHeader *m_mht;
56 
57  std::thread m_rcv_thr;
58 
59  time_t ctt;
60 
61  uint16_t m_idx;
62 
63  std::map<mudpi::uint16_t, MudpiProcessor> m_mudpiProcessorMap;
64 
65  // where we receive frame i.e. receive thread
66  void Receive();
67 
68  void SendExitMsg();
69 public:
76  explicit UdpReceiver(const std::string &serverhost, int portno, uint16_t idx);
77  ~UdpReceiver();
78 
85  int MapMudpiTopicId2Pub(mudpi::uint16_t mudpiTopicId, PubThreadBase<>& pub);
86 
90  void Enable();
91 
95  void Disable();
96 
100  void Join();
105  void SetAffinity(unsigned int cpu);
106 
110  void Statistics();
111 }; //UdpReceiver
112 
113 } // closing namespace
114 #endif //RTCTK_REUSABLECOMPONENT_TELREPUB_UDPRECEIVER_HPP_
rtctk::telRepub::UdpReceiver::~UdpReceiver
~UdpReceiver()
Definition: udpReceiver.cpp:27
rtctk::telRepub
Definition: ddsPub.cpp:12
mudpi::mudpiHeader
Definition: mudpi.h:27
rtctk::telRepub::UdpReceiver::Statistics
void Statistics()
Definition: udpReceiver.cpp:138
rtctk::telRepub::UdpReceiver::Join
void Join()
Definition: udpReceiver.cpp:123
mudpi::uint16_t
unsigned short uint16_t
Definition: mudpi.h:15
rtctk::telRepub::DATAGRAM_SIZE
int const DATAGRAM_SIZE
Definition: udpReceiver.hpp:28
rtctk::telRepub::UdpReceiver::SetAffinity
void SetAffinity(unsigned int cpu)
Definition: udpReceiver.cpp:91
rtctk::telRepub::EXIT_MSG
char const EXIT_MSG[]
Definition: udpReceiver.hpp:33
mudpiProcessor.hpp
MUDPI processor: check and aggregate MUDPI payload to a single topic and put to the queue for publish...
rtctk::telRepub::UdpReceiver::UdpReceiver
UdpReceiver(const std::string &serverhost, int portno, uint16_t idx)
Definition: udpReceiver.cpp:14
rtctk::telRepub::UdpReceiver
Definition: udpReceiver.hpp:40
rtctk::telRepub::UdpReceiver::Disable
void Disable()
Definition: udpReceiver.cpp:116
rtctk::telRepub::UdpReceiver::MapMudpiTopicId2Pub
int MapMudpiTopicId2Pub(mudpi::uint16_t mudpiTopicId, PubThreadBase<> &pub)
Definition: udpReceiver.cpp:144
rtctk::telRepub::UdpReceiver::Enable
void Enable()
Definition: udpReceiver.cpp:110
rtctk::telRepub::PubThreadBase<>