diff options
| author | leak <leak@bitmx.net> | 2014-07-02 17:38:44 +0200 |
|---|---|---|
| committer | leak <leak@bitmx.net> | 2014-07-02 17:38:44 +0200 |
| commit | 310f5e68467ee61b66796fdd88c7c9691d4bd2a0 (patch) | |
| tree | f182c5e0eb4d31c63dd851177b3afce2e1b187a0 /src/server/shared/Networking | |
| parent | c8fe4b8d5084dd26eb96a082422fcd68c090debc (diff) | |
Some ground work for ASIO based RemoteAccess handling
Diffstat (limited to 'src/server/shared/Networking')
| -rw-r--r-- | src/server/shared/Networking/AsyncAcceptor.h | 54 |
1 files changed, 54 insertions, 0 deletions
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 <http://www.trinitycore.org/> +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __ASYNCACCEPT_H_ +#define __ASYNCACCEPT_H_ + +#include <boost/asio.hpp> + +using boost::asio::ip::tcp; + +template <class T> +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<T>(std::move(_socket))->Start(); + } + + AsyncAccept(); + }); + } + + tcp::acceptor _acceptor; + tcp::socket _socket; +}; + +#endif /* __ASYNCACCEPT_H_ */ |
