8 #ifndef UDPCOMMUNICATION_HPP_
9 #define UDPCOMMUNICATION_HPP_
11 #include "IUdpCommunication.hpp"
35 UdpCommunication(asio::io_context &context, asio::ip::port_type
const &port) : _context(context),
36 _socket(_context, asio::ip::udp::endpoint(asio::ip::udp::v4(), port)) {};
46 UdpCommunication(asio::io_context &context, asio::ip::port_type
const &port, std::string
const &connectionPort, std::string
const &ip) : _context(context),
47 _socket(_context, asio::ip::udp::endpoint(asio::ip::udp::v4(), port)) {
48 asio::ip::udp::resolver resolver(context);
49 asio::ip::udp::resolver::query query(asio::ip::udp::v4(), ip, connectionPort);
50 asio::ip::udp::resolver::iterator iter = resolver.resolve(query);
59 void send(std::vector<byte>
const &data)
override {
60 _socket.send_to(asio::buffer(data.data(), data.size()), _endpoint);
70 void send(std::vector<byte>
const &data, asio::ip::address
const &address,
unsigned short const &port)
override {
72 _socket.send_to(asio::buffer(data.data(), data.size()), _endpoint);
81 void async_send(std::vector<byte>
const &data, std::function<
void(std::error_code
const &, std::size_t)> callBack)
override {
82 _socket.async_send_to(asio::buffer(data.data(), data.size()), _endpoint, callBack);
93 void async_send(std::vector<byte>
const &data, std::function<
void(std::error_code
const &, std::size_t)> callBack, asio::ip::address
const &address,
unsigned short const &port)
override {
95 _socket.async_send_to(asio::buffer(data.data(), data.size()), _endpoint, callBack);
104 std::pair<asio::ip::address, unsigned short>
receive(std::vector<byte> &data)
override {
107 _socket.receive_from(asio::buffer(data.data(), 1500), _endpoint);
117 void async_receive(std::vector<byte> &data, std::function<
void(std::error_code
const &, std::size_t)> callBack)
override {
120 _socket.async_receive_from(asio::buffer(data.data(), 1500), _endpoint, callBack);
129 return std::make_pair<asio::ip::address, unsigned short>(_endpoint.address(), _endpoint.port());
137 void setEnpointInfo(std::pair<asio::ip::address, unsigned short>
const &endpointInfo)
override {
138 _endpoint.address(endpointInfo.first);
139 _endpoint.port(endpointInfo.second);
148 void setEnpointInfo(asio::ip::address
const &address,
unsigned short const &port)
override {
149 _endpoint.address(address);
150 _endpoint.port(port);
155 asio::io_context &_context;
156 asio::ip::udp::socket _socket;
157 asio::ip::udp::endpoint _endpoint;