Loading src/main.cpp +14 −8 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ void print_usage() { std::cout << "3phone - p3 usage: " << std::endl << "p3 s erve - start the server" << std::endl << "p3 quit, stop - terminate server" << std::endl << "p3 restart - restart server" << std::endl << "p3 reload - reload phonebook and some parts of the configuration." << std::endl << "p3 c all [nr] - call someone" << std::endl << "p3 a nswer - answer a currently ringing call" << std::endl Loading @@ -58,9 +59,12 @@ void print_usage() { int run_server() { try { p3::server srv; bool restart = true; while (restart) { p3::server srv(restart); std::cout << "running server" << std::endl; srv.run(); } } catch (p3::perror const & e) { std::cout << "Server Error: " << e.what() << std::endl; return 1; Loading @@ -79,13 +83,13 @@ int run_client(int argc, char *argv[]) { return 0; } // Tell the server to quit, see protocol.h/server.h/client.h int send_quit() { // Tell the server to quit or restart, see protocol.h/server.h/client.h int send_command(p3::protocol command, const std::string& text) { try { p3::mQueue q(p3::mQueue::DefaultId); q.send(p3::protocol::QUIT, "Terminate server"); q.send(command, text); } catch (p3::perror const & e) { std::cout << "Termination Error: " << e.what() << std::endl; std::cout << text << " Error: " << e.what() << std::endl; return 1; } return 0; Loading @@ -100,7 +104,9 @@ int main(int argc, char *argv[]) { } else if (a == "s" || a == "serve" || a == "server") { return run_server(); } else if (a == "quit" || a == "stop") { // Quit has to be send without client connection. return send_quit(); return send_command(p3::protocol::QUIT, "Terminate server"); } else if (a == "restart") { // Restart has to be send without client connection. return send_command(p3::protocol::RESTART, "Restart server"); } else { return run_client(argc, argv); } Loading src/protocol.h +4 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,10 @@ namespace p3 { // MAIN CHANNEL. // Tells the server to exit. RESTART, // Data: *, Answer: none. // MAIN CHANNEL. // Tells the server to restart. SET_TIMEOUT, // Data: [timeout], ANSWER: OK/ERROR // Set the listen timeout on the server for the // current connection. (see msgq for valid values) Loading src/server.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -45,13 +45,15 @@ std::map<std::string, std::string> p3::server::default_config { }; p3::server::server() : p3::server::server(bool& r) : restart_flag(r), conf(std::string(std::getenv("HOME")) + "/.3phonerc", p3::server::default_config), connection(p3::mQueue::DefaultId, true), book(), hook(conf, book), phone(conf, hook, book) { restart_flag = false; p3::phonebook::set_config(conf); book.load(); } Loading @@ -77,9 +79,14 @@ void p3::server::run() { break; case p3::protocol::QUIT: r = false; restart_flag = false; break; case p3::protocol::RESTART: r = false; restart_flag = true; break; default: std::cout << "Protokol Error, invalid command in MAIN: " << m.get_value() << std::endl; std::cout << "Protocol Error, invalid command in MAIN: " << m.get_value() << std::endl; } } } catch (p3::perror & e) { Loading src/server.h +4 −1 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ namespace p3 { class server { bool & restart_flag; static std::map<std::string, std::string> default_config; config conf; Loading @@ -85,7 +87,8 @@ namespace p3 { void server_thread(const std::string& id); public: server(); // if restart is true after ther server dies, the user asked to restart it. explicit server(bool& restart); ~server(); void run(); Loading Loading
src/main.cpp +14 −8 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ void print_usage() { std::cout << "3phone - p3 usage: " << std::endl << "p3 s erve - start the server" << std::endl << "p3 quit, stop - terminate server" << std::endl << "p3 restart - restart server" << std::endl << "p3 reload - reload phonebook and some parts of the configuration." << std::endl << "p3 c all [nr] - call someone" << std::endl << "p3 a nswer - answer a currently ringing call" << std::endl Loading @@ -58,9 +59,12 @@ void print_usage() { int run_server() { try { p3::server srv; bool restart = true; while (restart) { p3::server srv(restart); std::cout << "running server" << std::endl; srv.run(); } } catch (p3::perror const & e) { std::cout << "Server Error: " << e.what() << std::endl; return 1; Loading @@ -79,13 +83,13 @@ int run_client(int argc, char *argv[]) { return 0; } // Tell the server to quit, see protocol.h/server.h/client.h int send_quit() { // Tell the server to quit or restart, see protocol.h/server.h/client.h int send_command(p3::protocol command, const std::string& text) { try { p3::mQueue q(p3::mQueue::DefaultId); q.send(p3::protocol::QUIT, "Terminate server"); q.send(command, text); } catch (p3::perror const & e) { std::cout << "Termination Error: " << e.what() << std::endl; std::cout << text << " Error: " << e.what() << std::endl; return 1; } return 0; Loading @@ -100,7 +104,9 @@ int main(int argc, char *argv[]) { } else if (a == "s" || a == "serve" || a == "server") { return run_server(); } else if (a == "quit" || a == "stop") { // Quit has to be send without client connection. return send_quit(); return send_command(p3::protocol::QUIT, "Terminate server"); } else if (a == "restart") { // Restart has to be send without client connection. return send_command(p3::protocol::RESTART, "Restart server"); } else { return run_client(argc, argv); } Loading
src/protocol.h +4 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,10 @@ namespace p3 { // MAIN CHANNEL. // Tells the server to exit. RESTART, // Data: *, Answer: none. // MAIN CHANNEL. // Tells the server to restart. SET_TIMEOUT, // Data: [timeout], ANSWER: OK/ERROR // Set the listen timeout on the server for the // current connection. (see msgq for valid values) Loading
src/server.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -45,13 +45,15 @@ std::map<std::string, std::string> p3::server::default_config { }; p3::server::server() : p3::server::server(bool& r) : restart_flag(r), conf(std::string(std::getenv("HOME")) + "/.3phonerc", p3::server::default_config), connection(p3::mQueue::DefaultId, true), book(), hook(conf, book), phone(conf, hook, book) { restart_flag = false; p3::phonebook::set_config(conf); book.load(); } Loading @@ -77,9 +79,14 @@ void p3::server::run() { break; case p3::protocol::QUIT: r = false; restart_flag = false; break; case p3::protocol::RESTART: r = false; restart_flag = true; break; default: std::cout << "Protokol Error, invalid command in MAIN: " << m.get_value() << std::endl; std::cout << "Protocol Error, invalid command in MAIN: " << m.get_value() << std::endl; } } } catch (p3::perror & e) { Loading
src/server.h +4 −1 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ namespace p3 { class server { bool & restart_flag; static std::map<std::string, std::string> default_config; config conf; Loading @@ -85,7 +87,8 @@ namespace p3 { void server_thread(const std::string& id); public: server(); // if restart is true after ther server dies, the user asked to restart it. explicit server(bool& restart); ~server(); void run(); Loading