15#include "../config/NetworkConfig.hpp"
16#include "../metrics/Metrics.hpp"
29 UdpTransport(asio::io_context &context, std::uint16_t port,
43 void send(
const asio::ip::udp::endpoint &destination,
44 const std::vector<std::uint8_t> &data);
63 const std::vector<std::uint8_t> &)>
67 static constexpr std::size_t BUFFER_SIZE = 2048;
69 asio::ip::udp::socket _socket;
70 asio::ip::udp::endpoint _endpoint;
73 std::array<std::uint8_t, BUFFER_SIZE> _receiveBuffer;
74 std::function<void(
const asio::ip::udp::endpoint &Endpoint,
75 const std::vector<std::uint8_t> &)>
Asynchronous UDP socket wrapper used by the server.
Definition UdpTransport.hpp:21
void setReceiveCallback(std::function< void(const asio::ip::udp::endpoint &Endpoint, const std::vector< std::uint8_t > &)> callback)
Sets the function called for every received datagram.
Definition UdpTransport.cpp:70
void send(const asio::ip::udp::endpoint &destination, const std::vector< std::uint8_t > &data)
Queues a datagram for sending, ignored if larger than the limit.
Definition UdpTransport.cpp:46
void startReceive()
Starts the receive loop that forwards datagrams to the callback.
Definition UdpTransport.cpp:9
UdpTransport(asio::io_context &context, std::uint16_t port, NetworkMetrics &metrics)
Opens an IPv4 UDP socket bound to a port.
Definition UdpTransport.cpp:4
bool isOpen() const
Tells whether the socket is still open.
Definition UdpTransport.cpp:77
void close()
Cancels pending operations and closes the socket.
Definition UdpTransport.cpp:96
Traffic and latency counters of a network endpoint.
Definition Metrics.hpp:14