#pragma once #include "messanger_service.hpp" #include namespace utils { template class MessangerT { public: explicit MessangerT(boost::asio::execution_context& execution_context) : service_(boost::asio::use_service(execution_context)), context_(service_.create()) {} ~MessangerT() { service_.destroy(context_); } template void on_receive(std::function handler) { context_.handlers.emplace_back(std::move(handler)); } template void send(const EventType& event) { service_.send(event); } private: Service& service_; typename Service::Context& context_; }; using Messanger = MessangerT; } // namespace utils