|
@@ -21,26 +21,25 @@ std::unique_ptr<INetworkHandler> INetworkHandler::createHandler()
|
|
|
}
|
|
|
|
|
|
NetworkHandler::NetworkHandler()
|
|
|
- : io(std::make_unique<NetworkContext>())
|
|
|
- , strand(std::make_unique<NetworkStrand>(*io))
|
|
|
+ : context(std::make_unique<NetworkContext>())
|
|
|
{}
|
|
|
|
|
|
std::unique_ptr<INetworkServer> NetworkHandler::createServerTCP(INetworkServerListener & listener)
|
|
|
{
|
|
|
- return std::make_unique<NetworkServer>(listener, *io, *strand);
|
|
|
+ return std::make_unique<NetworkServer>(listener, *context);
|
|
|
}
|
|
|
|
|
|
std::shared_ptr<INetworkConnection> NetworkHandler::createAsyncConnection(INetworkConnectionListener & listener)
|
|
|
{
|
|
|
- auto loopbackConnection = std::make_shared<InternalConnection>(listener, *strand);
|
|
|
+ auto loopbackConnection = std::make_shared<InternalConnection>(listener, *context);
|
|
|
loopbackConnection->connectTo(loopbackConnection);
|
|
|
return loopbackConnection;
|
|
|
}
|
|
|
|
|
|
void NetworkHandler::connectToRemote(INetworkClientListener & listener, const std::string & host, uint16_t port)
|
|
|
{
|
|
|
- auto socket = std::make_shared<NetworkSocket>(*io);
|
|
|
- auto resolver = std::make_shared<boost::asio::ip::tcp::resolver>(*io);
|
|
|
+ auto socket = std::make_shared<NetworkSocket>(*context);
|
|
|
+ auto resolver = std::make_shared<boost::asio::ip::tcp::resolver>(*context);
|
|
|
|
|
|
resolver->async_resolve(host, std::to_string(port),
|
|
|
[this, &listener, resolver, socket](const boost::system::error_code& error, const boost::asio::ip::tcp::resolver::results_type & endpoints)
|
|
@@ -58,7 +57,7 @@ void NetworkHandler::connectToRemote(INetworkClientListener & listener, const st
|
|
|
listener.onConnectionFailed(error.message());
|
|
|
return;
|
|
|
}
|
|
|
- auto connection = std::make_shared<NetworkConnection>(listener, socket, *io);
|
|
|
+ auto connection = std::make_shared<NetworkConnection>(listener, socket, *context);
|
|
|
connection->start();
|
|
|
|
|
|
listener.onConnectionEstablished(connection);
|
|
@@ -68,13 +67,13 @@ void NetworkHandler::connectToRemote(INetworkClientListener & listener, const st
|
|
|
|
|
|
void NetworkHandler::run()
|
|
|
{
|
|
|
- boost::asio::executor_work_guard<decltype(io->get_executor())> work{io->get_executor()};
|
|
|
- io->run();
|
|
|
+ boost::asio::executor_work_guard<decltype(context->get_executor())> work{context->get_executor()};
|
|
|
+ context->run();
|
|
|
}
|
|
|
|
|
|
void NetworkHandler::createTimer(INetworkTimerListener & listener, std::chrono::milliseconds duration)
|
|
|
{
|
|
|
- auto timer = std::make_shared<NetworkTimer>(*io, duration);
|
|
|
+ auto timer = std::make_shared<NetworkTimer>(*context, duration);
|
|
|
timer->async_wait([&listener, timer](const boost::system::error_code& error){
|
|
|
if (!error)
|
|
|
listener.onTimer();
|
|
@@ -83,18 +82,18 @@ void NetworkHandler::createTimer(INetworkTimerListener & listener, std::chrono::
|
|
|
|
|
|
void NetworkHandler::createInternalConnection(INetworkClientListener & listener, INetworkServer & server)
|
|
|
{
|
|
|
- auto localConnection = std::make_shared<InternalConnection>(listener, *strand);
|
|
|
+ auto localConnection = std::make_shared<InternalConnection>(listener, *context);
|
|
|
|
|
|
server.receiveInternalConnection(localConnection);
|
|
|
|
|
|
- boost::asio::post(*io, [&listener, localConnection](){
|
|
|
+ boost::asio::post(*context, [&listener, localConnection](){
|
|
|
listener.onConnectionEstablished(localConnection);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
void NetworkHandler::stop()
|
|
|
{
|
|
|
- io->stop();
|
|
|
+ context->stop();
|
|
|
}
|
|
|
|
|
|
VCMI_LIB_NAMESPACE_END
|