Nidrax

UdpClient.h

Oct 4th, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #ifndef UDP_CLIENT_H
  2. #define UDP_CLIENT_H
  3.  
  4. #define COMM_COUNT 5
  5.  
  6. #include "ICommClient.h"
  7. #include <boost/asio.hpp>
  8. #include <boost/system/error_code.hpp>
  9.  
  10. using boost::asio::ip::udp;
  11. using boost::asio::ip::address;
  12.  
  13. // ReSharper disable once CppPolymorphicClassWithNonVirtualPublicDestructor
  14. class UdpClient : public ICommClient  // NOLINT
  15. {
  16. public:
  17.     UdpClient();
  18.     // ReSharper disable once CppHidingFunction
  19.     ~UdpClient();
  20.  
  21.     void Init(bool) override;
  22.     void Send(std::string) override;
  23.     void Send(int) override;
  24.     boost::signals2::signal<void(double *, int)>* GetIncomer() override;
  25.     boost::signals2::signal<void(std::string)>* GetStringIncomer() override;
  26.  
  27. private:
  28.     boost::asio::io_service _ioServiceIn;
  29.     std::shared_ptr<udp::socket> _socketIn;
  30.     std::shared_ptr<udp::endpoint> _endpointIn;
  31.     std::array<char, 1024> _bufferIn;
  32.  
  33.     boost::asio::io_service _ioServiceOut;
  34.     std::shared_ptr<udp::socket> _socketOut;
  35.     std::shared_ptr<udp::endpoint> _endpointOut;
  36.  
  37.     boost::signals2::signal<void(double *, int)> _incoming;
  38.     boost::signals2::signal<void(std::string)> _stringIncoming;
  39.  
  40.     void StartReceive();
  41.     void Receive(const boost::system::error_code& error, std::size_t bytesTransferred);
  42.  
  43.     union Command
  44.     {
  45.         char C[COMM_COUNT * 8];
  46.         double D[COMM_COUNT];
  47.     };
  48.  
  49.     union MFiflak
  50.     {
  51.         char C[4];
  52.         int I;
  53.     };
  54. };
  55.  
  56. #endif //UDP_CLIENT_H
Advertisement
Add Comment
Please, Sign In to add comment