spectrum2_manager can start/stop particular instances

This commit is contained in:
HanzZ 2012-08-01 17:03:59 +02:00
parent ef259f4aef
commit c83794bb38

View file

@ -118,7 +118,7 @@ static int isRunning(const std::string &pidfile) {
return boost::lexical_cast<int>(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;