diff --git a/examples/testee_server/testee_server.cpp b/examples/testee_server/testee_server.cpp index 363c7a98be..61bb86a10b 100644 --- a/examples/testee_server/testee_server.cpp +++ b/examples/testee_server/testee_server.cpp @@ -39,6 +39,7 @@ struct testee_config : public websocketpp::config::asio { typedef core::message_type message_type; typedef core::con_msg_manager_type con_msg_manager_type; typedef core::endpoint_msg_manager_type endpoint_msg_manager_type; + typedef core::alog_type alog_type; typedef core::elog_type elog_type; typedef core::rng_type rng_type; @@ -80,10 +81,18 @@ void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) { } int main() { - // Create a server endpoint + // Create a server endpoint server testee_server; - try { + short port = 9002; + size_t num_threads = 1; + + if (argc == 3) { + port = atoi(argv[1]); + num_threads = atoi(argv[2]); + } + + try { // Total silence testee_server.clear_access_channels(websocketpp::log::alevel::all); testee_server.clear_error_channels(websocketpp::log::alevel::all); @@ -94,20 +103,26 @@ int main() { // Register our message handler testee_server.set_message_handler(bind(&on_message,&testee_server,::_1,::_2)); - // Listen on port 9002 - testee_server.listen(9002); + // Listen on port port + testee_server.listen(port); // Start the server accept loop testee_server.start_accept(); - // Start the ASIO io_service run loop - testee_server.run(); + // Start the ASIO io_service run loop + if (num_threads == 1) { + testee_server.run(); + } else { + typedef websocketpp::lib::shared_ptr thread_ptr; + std::vector ts; + for (size_t i = 0; i < num_threads; i++) { + ts.push_back(thread_ptr(new websocketpp::lib::thread(&server::run, &testee_server))); + } - /*websocketpp::lib::thread t1(&server::run, &testee_server); - websocketpp::lib::thread t2(&server::run, &testee_server); - - t1.join(); - t2.join();*/ + for (size_t i = 0; i < num_threads; i++) { + ts[i]->join(); + } + } } catch (const std::exception & e) { std::cout << "exception: " << e.what() << std::endl;