6#include <boost/asio/awaitable.hpp>
7#include <boost/asio/deferred.hpp>
8#include <boost/asio/impl/co_spawn.hpp>
9#include <boost/asio/strand.hpp>
10#include <boost/asio/system_timer.hpp>
12#include <fmt/ranges.h>
17#include <spdlog/spdlog.h>
34 return std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() -
start_time_)
42 asio::strand<io_context_type::executor_type>
strand_;
46 std::chrono::time_point<std::chrono::steady_clock>
start_time_ = std::chrono::steady_clock::now();
48 using ActionType =
decltype(asio::co_spawn(
strand_, asio::awaitable<void>(), asio::deferred));
59 std::span<char> response,
FecCommandSocket(int port_number, io_context_type &io_context)
void deregister_connection(const UDPEndpoint &endpoint, std::span< char > response, SmallConnections &connections)
auto get_response_msg_buffer() -> auto &
std::map< UDPEndpoint, SmallConnections > all_connections_
std::vector< ActionType > action_queue_
auto get_time_us() const -> auto
auto is_finished() -> bool
void register_send_action_imp(asio::awaitable< void > action, const std::shared_ptr< SmallConnection > &connection)
SmallConnection ConnectionType
void print_available_responses() const
asio::strand< io_context_type::executor_type > strand_
std::chrono::time_point< std::chrono::steady_clock > start_time_
decltype(asio::co_spawn(strand_, asio::awaitable< void >(), asio::deferred)) ActionType
void response_handler(const UDPEndpoint &endpoint, std::span< char > response)
CommandBase SmallConnection
auto get_strand() -> auto &
std::vector< char > read_msg_buffer_
std::vector< std::shared_ptr< SmallConnection > > SmallConnections
boost::asio::ip::basic_endpoint< boost::asio::ip::udp > UDPEndpoint
asio::thread_pool io_context_type