EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
APIServerListener.cpp
Go to the documentation of this file.
1 /*
2  ------------------------------------------------------------------------------------
3  LICENSE:
4  ------------------------------------------------------------------------------------
5  This file is part of EVEmu: EVE Online Server Emulator
6  Copyright 2006 - 2021 The EVEmu Team
7  For the latest information visit https://evemu.dev
8  ------------------------------------------------------------------------------------
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13 
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public License along with
19  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20  Place - Suite 330, Boston, MA 02111-1307, USA, or go to
21  http://www.gnu.org/copyleft/lesser.txt.
22  ------------------------------------------------------------------------------------
23  Author: Aknor Jaden, adapted from ImageServer.h authored by caytchen
24 */
25 
26 #include "eve-server.h"
27 
28 #include "EVEServerConfig.h"
30 
31 APIServerListener::APIServerListener(boost::asio::io_context& io)
32 {
33  _acceptor = new boost::asio::ip::tcp::acceptor(io, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), sConfig.net.apiServerPort));
34  sLog.Log("API Server Init", "listening on port %u", (sConfig.net.apiServerPort));
35  StartAccept();
36 }
37 
39 {
40  delete _acceptor;
41 }
42 
44 {
45  boost::asio::executor e = _acceptor->get_executor();
46  boost::asio::execution_context &e_context = e.context();
47  boost::asio::io_context &context_instance = static_cast<boost::asio::io_context&>(e_context);
48 
49  std::tr1::shared_ptr<APIServerConnection> connection = APIServerConnection::create(context_instance);
50  _acceptor->async_accept(connection->socket(), std::bind(&APIServerListener::HandleAccept, this, connection));
51 }
52 
53 void APIServerListener::HandleAccept(std::tr1::shared_ptr<APIServerConnection> connection)
54 {
55  connection->Process();
56  StartAccept();
57 }
#define sConfig
A macro for easier access to the singleton.
static std::tr1::shared_ptr< APIServerConnection > create(boost::asio::io_context &io)
void HandleAccept(std::tr1::shared_ptr< APIServerConnection > connection)
APIServerListener(boost::asio::io_context &io)
#define sLog
Evaluates to a NewLog instance.
Definition: LogNew.h:250
boost::asio::ip::tcp::acceptor * _acceptor