From 873c3550ca1b6bee97fcae80e940cda59f7ef7de Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Mon, 25 Mar 2019 19:02:38 +0200 Subject: [PATCH] instantiate server with multi-threads --- src/bin/dhcp4/main.cc | 15 ++++++++------- src/bin/dhcp6/main.cc | 19 ++++++------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/bin/dhcp4/main.cc b/src/bin/dhcp4/main.cc index 7e138ac00d..2c06d88ffe 100644 --- a/src/bin/dhcp4/main.cc +++ b/src/bin/dhcp4/main.cc @@ -31,6 +31,9 @@ using namespace std; /// instantiates ControlledDhcpv4Srv class that is responsible for establishing /// connection with msgq (receiving commands and configuration) and also /// creating Dhcpv4 server object as well. +/// +/// For detailed explanation or relations between main(), ControlledDhcpv4Srv, +/// Dhcpv4Srv and other classes, see \ref dhcpv4Session. namespace { @@ -57,7 +60,7 @@ usage() { << "(useful for testing only)" << endl; exit(EXIT_FAILURE); } -} // end of anonymous namespace +} // namespace int main(int argc, char* argv[]) { @@ -98,7 +101,7 @@ main(int argc, char* argv[]) { config_file = optarg; break; - case 'p': + case 'p': // server port number try { server_port_number = boost::lexical_cast(optarg); } catch (const boost::bad_lexical_cast &) { @@ -113,7 +116,7 @@ main(int argc, char* argv[]) { } break; - case 'P': + case 'P': // client port number try { client_port_number = boost::lexical_cast(optarg); } catch (const boost::bad_lexical_cast &) { @@ -138,7 +141,6 @@ main(int argc, char* argv[]) { usage(); } - // Configuration file is required. if (config_file.empty()) { cerr << "Configuration file not specified." << endl; @@ -150,7 +152,6 @@ main(int argc, char* argv[]) { if (check_mode) { try { - // We need to initialize logging, in case any error messages are to be printed. // This is just a test, so we don't care about lockfile. setenv("KEA_LOCKFILE_DIR", "none", 0); @@ -214,12 +215,12 @@ main(int argc, char* argv[]) { LOG_INFO(dhcp4_logger, DHCP4_STARTING).arg(VERSION); // Create the server instance. - ControlledDhcpv4Srv server(server_port_number, client_port_number); + ControlledDhcpv4Srv server(server_port_number, client_port_number, true); // Remember verbose-mode server.setVerbose(verbose_mode); - // Create our PID file. + // Create our PID file server.setProcName(DHCP4_NAME); server.setConfigFile(config_file); server.createPIDFile(); diff --git a/src/bin/dhcp6/main.cc b/src/bin/dhcp6/main.cc index 6f44221f5e..78ecfe384b 100644 --- a/src/bin/dhcp6/main.cc +++ b/src/bin/dhcp6/main.cc @@ -62,7 +62,7 @@ usage() { << "(useful for testing only)" << endl; exit(EXIT_FAILURE); } -} // end of anonymous namespace +} // namespace int main(int argc, char* argv[]) { @@ -193,11 +193,8 @@ main(int argc, char* argv[]) { cerr << "Error encountered: " << answer->stringValue() << endl; return (EXIT_FAILURE); } - - - return (EXIT_SUCCESS); } catch (const std::exception& ex) { - cerr << "Syntax check failed with " << ex.what() << endl; + cerr << "Syntax check failed with: " << ex.what() << endl; } return (EXIT_FAILURE); } @@ -211,7 +208,6 @@ main(int argc, char* argv[]) { // Initialize logging. If verbose, we'll use maximum verbosity. Daemon::loggerInit(DHCP6_LOGGER_NAME, verbose_mode); - LOG_DEBUG(dhcp6_logger, DBG_DHCP6_START, DHCP6_START_INFO) .arg(getpid()) .arg(server_port_number) @@ -221,7 +217,7 @@ main(int argc, char* argv[]) { LOG_INFO(dhcp6_logger, DHCP6_STARTING).arg(VERSION); // Create the server instance. - ControlledDhcpv6Srv server(server_port_number, client_port_number); + ControlledDhcpv6Srv server(server_port_number, client_port_number, true); // Remember verbose-mode server.setVerbose(verbose_mode); @@ -232,10 +228,8 @@ main(int argc, char* argv[]) { server.createPIDFile(); try { - // Initialize the server, e.g. establish control session - // Read a configuration file + // Initialize the server. server.init(config_file); - } catch (const std::exception& ex) { try { @@ -245,8 +239,8 @@ main(int argc, char* argv[]) { LOG_ERROR(dhcp6_logger, DHCP6_INIT_FAIL).arg(ex.what()); } catch (...) { // The exception thrown during the initialization could - // originate from logger subsystem. Therefore LOG_ERROR() may - // fail as well. + // originate from logger subsystem. Therefore LOG_ERROR() + // may fail as well. cerr << "Failed to initialize server: " << ex.what() << endl; } @@ -277,7 +271,6 @@ main(int argc, char* argv[]) { } ret = EXIT_FAILURE; } catch (const std::exception& ex) { - // First, we print the error on stderr (that should always work) cerr << DHCP6_NAME << "Fatal error during start up: " << ex.what() << endl; -- 2.47.2