mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-17 02:43:26 +00:00
Factor server start into separate function
Needed to allow campaignd to load config before starting server.
This commit is contained in:
parent
358bf3f9f8
commit
bd304cb307
@ -100,7 +100,7 @@ void set_passphrase(config& campaign, std::string passphrase)
|
||||
namespace campaignd {
|
||||
|
||||
server::server(const std::string& cfg_file)
|
||||
: server_base(load_config(), true)
|
||||
: server_base(default_campaignd_port, true)
|
||||
, cfg_()
|
||||
, cfg_file_(cfg_file)
|
||||
, read_only_(false)
|
||||
@ -111,6 +111,8 @@ server::server(const std::string& cfg_file)
|
||||
, blacklist_()
|
||||
, blacklist_file_()
|
||||
{
|
||||
load_config();
|
||||
|
||||
LOG_CS << "Port: " << port_ << " ";
|
||||
|
||||
// Ensure all campaigns to use secure hash passphrase storage
|
||||
@ -129,6 +131,8 @@ server::server(const std::string& cfg_file)
|
||||
}
|
||||
|
||||
register_handlers();
|
||||
|
||||
start_server();
|
||||
}
|
||||
|
||||
server::~server()
|
||||
@ -136,7 +140,7 @@ server::~server()
|
||||
write_config();
|
||||
}
|
||||
|
||||
int server::load_config()
|
||||
void server::load_config()
|
||||
{
|
||||
LOG_CS << "Reading configuration from " << cfg_file_ << "...\n";
|
||||
|
||||
@ -191,7 +195,7 @@ int server::load_config()
|
||||
cfg_["compress_level"] = compress_level_;
|
||||
|
||||
// But not the listening port number.
|
||||
return cfg_["port"].to_int(default_campaignd_port);
|
||||
port_ = cfg_["port"].to_int(default_campaignd_port);
|
||||
}
|
||||
|
||||
void server::handle_new_client(socket_ptr socket)
|
||||
|
@ -99,10 +99,8 @@ private:
|
||||
|
||||
/**
|
||||
* Reads the server configuration from WML.
|
||||
*
|
||||
* @return The configured listening port number.
|
||||
*/
|
||||
int load_config();
|
||||
void load_config();
|
||||
|
||||
/**
|
||||
* Writes the server configuration WML back to disk.
|
||||
|
@ -259,6 +259,8 @@ server::server(int port, bool keep_alive, const std::string& config_file, size_t
|
||||
setup_handlers();
|
||||
load_config();
|
||||
ban_manager_.read();
|
||||
|
||||
start_server();
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
|
@ -32,7 +32,9 @@ static lg::log_domain log_config("config");
|
||||
|
||||
#include "send_receive_wml_helpers.ipp"
|
||||
|
||||
server_base::server_base(int port, bool keep_alive) :
|
||||
server_base::server_base(unsigned short port, bool keep_alive) :
|
||||
port_(port),
|
||||
keep_alive_(keep_alive),
|
||||
io_service_(),
|
||||
acceptor_(io_service_),
|
||||
#ifndef _WIN32
|
||||
@ -41,10 +43,14 @@ server_base::server_base(int port, bool keep_alive) :
|
||||
#endif
|
||||
sigs_(io_service_, SIGINT, SIGTERM)
|
||||
{
|
||||
boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), port);
|
||||
}
|
||||
|
||||
void server_base::start_server()
|
||||
{
|
||||
boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), port_);
|
||||
acceptor_.open(endpoint.protocol());
|
||||
acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
|
||||
acceptor_.set_option(boost::asio::ip::tcp::acceptor::keep_alive(keep_alive));
|
||||
acceptor_.set_option(boost::asio::ip::tcp::acceptor::keep_alive(keep_alive_));
|
||||
acceptor_.bind(endpoint);
|
||||
acceptor_.listen();
|
||||
serve();
|
||||
|
@ -36,13 +36,16 @@ struct server_shutdown : public game::error
|
||||
class server_base
|
||||
{
|
||||
public:
|
||||
server_base(int port, bool keep_alive);
|
||||
server_base(unsigned short port, bool keep_alive);
|
||||
virtual ~server_base() {}
|
||||
void run();
|
||||
|
||||
protected:
|
||||
unsigned short port_;
|
||||
bool keep_alive_;
|
||||
boost::asio::io_service io_service_;
|
||||
boost::asio::ip::tcp::acceptor acceptor_;
|
||||
void start_server();
|
||||
void serve();
|
||||
void accept_connection(const boost::system::error_code& error, socket_ptr socket);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user