# # # add_file "forked_server_manager.cc" # content [8ae502d0befd209b2b7e31c1e08af8d2cfeda90a] # # add_file "forked_server_manager.hh" # content [220b035b43a7f62fa99938d23ab7dc8b2f4ba3fd] # # patch "administrator.cc" # from [2089d74452a2aa045e3a2089202722fd3939f5fb] # to [057432d0959541fe206fefefff4e0e92505cf90c] # ============================================================ --- forked_server_manager.cc 8ae502d0befd209b2b7e31c1e08af8d2cfeda90a +++ forked_server_manager.cc 8ae502d0befd209b2b7e31c1e08af8d2cfeda90a @@ -0,0 +1,63 @@ +#include "forked_server_manager.hh" +#include "serverlist_reader.hh" +#include "err.hh" + +#include +using std::max; +using std::min; +using std::make_pair; + +#include +#include + +forked_server_manager::forked_server_manager(serverlist_reader &r) + : server_manager(r) +{ + int p[2]; + pipe(p); + from_main = p[1]; + to_thread = p[0]; + pipe(p); + from_thread = p[1]; + to_main = p[0]; + pid = fork(); + if (!pid) + { + exit(0); + } +} + +void +forked_server_manager::add_replace_server(shared_ptr srv, + serverdata const &dat) +{ +} + +void +forked_server_manager::delist_server(shared_ptr srv) +{ +} + +void +forked_server_manager::reload_servers() +{ +} + +serversock +forked_server_manager::connect_to_server(string const &host, + string const &pattern) +{ +} +void +forked_server_manager::disconnect_from_server(serversock const &s) +{ +} +serverstate +forked_server_manager::get_server_state(string const &name) +{ +} + +void +forked_server_manager::kill_old_servers() +{ +} ============================================================ --- forked_server_manager.hh 220b035b43a7f62fa99938d23ab7dc8b2f4ba3fd +++ forked_server_manager.hh 220b035b43a7f62fa99938d23ab7dc8b2f4ba3fd @@ -0,0 +1,19 @@ +#ifndef __SERVER_MANAGER_HH_ +#define __SERVER_MANAGER_HH_ + +#include "server_manager.hh" + +struct forked_server_manager : public server_manager +{ + int pid; + int to_main, from_main, to_thread, from_thread; + forked_server_manager(serverlist_reader &r); + + void reload_servers(); + serversock connect_to_server(string const &host, string const &pattern); + void disconnect_from_server(serversock const &s); + serverstate get_server_state(string const &name); + void kill_old_servers(); +}; + +#endif ============================================================ --- administrator.cc 2089d74452a2aa045e3a2089202722fd3939f5fb +++ administrator.cc 057432d0959541fe206fefefff4e0e92505cf90c @@ -50,6 +50,8 @@ cs.auth = true; return process(cs); } + } else if (!cs.auth) { + cs.buf = "You must log in first.\n"; } else if (cmd == "STATUS") { string srv; iss>>srv; @@ -129,7 +131,7 @@ manager.allow_connections(true); cs.buf = "ok\n"; } else { - return true; + cs.buf = "unknown command\n"; } cs.rdone = true; return true;