From 310f5e68467ee61b66796fdd88c7c9691d4bd2a0 Mon Sep 17 00:00:00 2001 From: leak Date: Wed, 2 Jul 2014 17:38:44 +0200 Subject: Some ground work for ASIO based RemoteAccess handling --- src/server/shared/Networking/AsyncAcceptor.h | 54 ++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/server/shared/Networking/AsyncAcceptor.h (limited to 'src/server/shared/Networking') diff --git a/src/server/shared/Networking/AsyncAcceptor.h b/src/server/shared/Networking/AsyncAcceptor.h new file mode 100644 index 00000000000..c54471fd01a --- /dev/null +++ b/src/server/shared/Networking/AsyncAcceptor.h @@ -0,0 +1,54 @@ +/* +* Copyright (C) 2008-2014 TrinityCore +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at your +* option) any later version. +* +* This program is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License along +* with this program. If not, see . +*/ + +#ifndef __ASYNCACCEPT_H_ +#define __ASYNCACCEPT_H_ + +#include + +using boost::asio::ip::tcp; + +template +class AsyncAcceptor +{ +public: + AsyncAcceptor(boost::asio::io_service& ioService, std::string bindIp, int port) : + _socket(ioService), + _acceptor(ioService, tcp::endpoint(boost::asio::ip::address::from_string(bindIp), port)) + { + AsyncAccept(); + }; + +private: + void AsyncAcceptor::AsyncAccept() + { + _acceptor.async_accept(_socket, [this](boost::system::error_code error) + { + if (!error) + { + std::make_shared(std::move(_socket))->Start(); + } + + AsyncAccept(); + }); + } + + tcp::acceptor _acceptor; + tcp::socket _socket; +}; + +#endif /* __ASYNCACCEPT_H_ */ -- cgit v1.2.3