#include #include #include "../net/adc_netproto.h" #include "../net/asio/adc_netservice_asio.h" template void receive(T& srv) { srv.asyncReceive( [&srv](std::error_code ec, std::string msg) { if (!ec) { std::cout << "Received: [" << msg << "]\n"; receive(srv); } else { std::cout << "Received: " << ec.message() << "\n"; } }, std::chrono::minutes(1)); } int main() { asio::ip::tcp::endpoint ept_s(asio::ip::tcp::v4(), 9999); asio::ip::tcp::endpoint ept_c(asio::ip::make_address_v4("0.0.0.0"), 9999); // asio::ip::tcp::endpoint ept_c(asio::ip::address_v4::any(), 9999); // std::cout << "ADDR: " << ept_s << "\n"; std::cout << "ADDR: " << ept_c << "\n"; asio::io_context ctx; adc::impl::AdcNetServiceASIOBase> srv(ctx); // adc::impl::AdcNetServiceASIOBase>::asio_async_ctx_t srv_ctx; // srv_ctx.accept_comp_token = [](std::error_code ec) { // }; // srv.asyncAccept(ept_s, srv_ctx, std::chrono::seconds(120)); // srv.asyncConnect(ept_c, [](std::error_code ec) { // }); // adc::impl::AdcNetServiceASIOBase>::contx_t s_ctx; // srv.asyncConnect(ept_c, s_ctx); // auto res = srv.asyncConnect(ept_c, asio::use_awaitable); srv.asyncAccept( ept_c, [&srv](std::error_code ec) { if (!ec) { std::cout << "New connection\n"; // srv.asyncReceive( // [](std::error_code ec, std::string msg) { // if (!ec) { // std::cout << "Received: [" << msg << "]\n"; // } else { // std::cout << "Received: " << ec.message() << "\n"; // } // }, // std::chrono::minutes(1)); receive(srv); } else { std::cout << "ACCEPT ERR: " << ec.message() << "\n"; } }, std::chrono::minutes(3)); ctx.run(); std::cout << "Exit!\n"; return 0; }