movable), acceptor_t.asyncAccept completion token has signature: void(std::error_code, std::shared_ptr<netservice_t>)
51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#include <asio/ip/tcp.hpp>
|
|
#include <iostream>
|
|
|
|
#include "../net/adc_netproto.h"
|
|
#include "../net/asio/adc_netservice_asio.h"
|
|
|
|
template <typename T>
|
|
void receive(T srv)
|
|
{
|
|
srv->asyncReceive(
|
|
[srv](std::error_code ec, std::string msg) {
|
|
if (!ec) {
|
|
std::cout << "Received: [" << msg << "]\n";
|
|
receive(std::move(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;
|
|
|
|
using srv_t = adc::impl::AdcNetServiceASIOBase<asio::ip::tcp, adc::AdcStopSeqSessionProto<>>;
|
|
|
|
typename srv_t::acceptor_t acc(ctx, ept_c);
|
|
|
|
acc.asyncAccept([](std::error_code ec, auto srv) {
|
|
if (!ec) {
|
|
receive(std::move(srv));
|
|
} else {
|
|
std::cout << "ACCEPT ERR: " << ec.message() << "\n";
|
|
}
|
|
});
|
|
|
|
ctx.run();
|
|
|
|
std::cout << "Exit!\n";
|
|
|
|
return 0;
|
|
}
|