From c83794bb382af58468fdf4a02f68117f439ae496 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Wed, 1 Aug 2012 17:03:59 +0200 Subject: [PATCH] spectrum2_manager can start/stop particular instances --- spectrum_manager/src/main.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/spectrum_manager/src/main.cpp b/spectrum_manager/src/main.cpp index 32b542f0..75ba57af 100644 --- a/spectrum_manager/src/main.cpp +++ b/spectrum_manager/src/main.cpp @@ -118,7 +118,7 @@ static int isRunning(const std::string &pidfile) { return boost::lexical_cast(pid); } -static void start_all_instances(ManagerConfig *config) { +static void start_instances(ManagerConfig *config, const std::string &_jid = "") { path p(CONFIG_STRING(config, "service.config_directory")); try { @@ -160,6 +160,10 @@ static void start_all_instances(ManagerConfig *config) { continue; } + if (!_jid.empty() && _jid != vhost) { + continue; + } + int pid = isRunning(CONFIG_STRING(&vhostCfg, "service.pidfile")); if (pid == 0) { std::cout << "Starting " << itr->path() << ": OK\n"; @@ -178,7 +182,7 @@ static void start_all_instances(ManagerConfig *config) { } } -static void stop_all_instances(ManagerConfig *config) { +static void stop_instances(ManagerConfig *config, const std::string &_jid = "") { path p(CONFIG_STRING(config, "service.config_directory")); try { @@ -212,6 +216,10 @@ static void stop_all_instances(ManagerConfig *config) { continue; } + if (!_jid.empty() && _jid != vhost) { + continue; + } + int pid = isRunning(CONFIG_STRING(&vhostCfg, "service.pidfile")); if (pid) { std::cout << "Stopping " << itr->path() << ": OK\n"; @@ -547,10 +555,10 @@ int main(int argc, char **argv) } if (command[0] == "start") { - start_all_instances(&config); + start_instances(&config); } else if (command[0] == "stop") { - stop_all_instances(&config); + stop_instances(&config); } else if (command[0] == "status") { return show_status(&config); @@ -570,6 +578,15 @@ int main(int argc, char **argv) command.erase(command.begin()); std::string cmd = boost::algorithm::join(command, " "); + if (cmd == "start") { + start_instances(&config, jid); + return 0; + } + else if (cmd == "stop") { + stop_instances(&config, jid); + return 0; + } + ask_local_server(&config, networkFactories, jid, cmd); // std::string message = command; // m = &message;