X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fserver_container.cc;h=684303a23934ef09e7a4e62352cc44219fc8a60d;hb=1170b1b371ce7bdb50e8e7ae887687f5a45f81b9;hp=f747dc229b4e47d620f1b9390a214a261c18f4db;hpb=27ee6d2aea6210eaca004475600aba78b7170883;p=awesomized%2Flibmemcached diff --git a/libtest/server_container.cc b/libtest/server_container.cc index f747dc22..684303a2 100644 --- a/libtest/server_container.cc +++ b/libtest/server_container.cc @@ -75,31 +75,55 @@ Server* server_startup_st::pop_server() return tmp; } -void server_startup_st::shutdown(bool remove) +bool server_startup_st::shutdown(uint32_t number_of_host) { - if (remove) + assert(servers.size() > number_of_host); + if (servers.size() > number_of_host) { - for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) + Server* tmp= servers[number_of_host]; + + if (tmp and tmp->has_pid() and not tmp->kill(tmp->pid())) + { } + else { - delete *iter; + return true; } - servers.clear(); } - else + + return false; +} + +void server_startup_st::shutdown_and_remove() +{ + for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) + { + delete *iter; + } + servers.clear(); +} + +void server_startup_st::shutdown() +{ + for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) { - for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) + if ((*iter)->has_pid() and not (*iter)->kill((*iter)->pid())) { - if ((*iter)->has_pid() and not (*iter)->kill((*iter)->pid())) - { - Error << "Unable to kill:" << *(*iter); - } + Error << "Unable to kill:" << *(*iter); } } } +void server_startup_st::restart() +{ + for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) + { + (*iter)->start(); + } +} + server_startup_st::~server_startup_st() { - shutdown(true); + shutdown_and_remove(); } bool server_startup_st::is_debug() const @@ -123,6 +147,8 @@ bool server_startup(server_startup_st& construct, const std::string& server_type Outn(); (void)try_port; + set_max_port(try_port); + // Look to see if we are being provided ports to use { char variable_buffer[1024];