diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2006-11-29 17:16:57 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2006-11-29 17:16:57 +0000 |
commit | 71c26812ce4fa55801b23b8a9101f0dd83f3cccd (patch) | |
tree | 7bdc27a8bad01a30e64c4d74cee98aa8352f4eca /cpp/src/IceBox/Admin.cpp | |
parent | Added start/stop of IceBox service (diff) | |
download | ice-71c26812ce4fa55801b23b8a9101f0dd83f3cccd.tar.bz2 ice-71c26812ce4fa55801b23b8a9101f0dd83f3cccd.tar.xz ice-71c26812ce4fa55801b23b8a9101f0dd83f3cccd.zip |
Added stop/start service to IceBox admin
Diffstat (limited to 'cpp/src/IceBox/Admin.cpp')
-rw-r--r-- | cpp/src/IceBox/Admin.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/cpp/src/IceBox/Admin.cpp b/cpp/src/IceBox/Admin.cpp index 0ecc1024fca..ce9855b64d3 100644 --- a/cpp/src/IceBox/Admin.cpp +++ b/cpp/src/IceBox/Admin.cpp @@ -42,6 +42,8 @@ Client::usage() "-v, --version Display the Ice version.\n" "\n" "Commands:\n" + "start SERVICE Start a service.\n" + "stop SERVICE Stop a service.\n" "shutdown Shutdown the server.\n" ; } @@ -134,6 +136,7 @@ Client::run(int argc, char* argv[]) } } + vector<string>::const_iterator r; for(r = commands.begin(); r != commands.end(); ++r) { @@ -141,6 +144,48 @@ Client::run(int argc, char* argv[]) { manager->shutdown(); } + else if((*r) == "start") + { + if(++r == commands.end()) + { + cerr << appName() << ": no service name specified." << endl; + return EXIT_FAILURE; + } + + try + { + manager->startService(*r); + } + catch(const IceBox::NoSuchServiceException&) + { + cerr << appName() << ": unknown service `" << *r << "'" << endl; + } + catch(const IceBox::AlreadyStartedException&) + { + cerr << appName() << ": service already started." << endl; + } + } + else if((*r) == "stop") + { + if(++r == commands.end()) + { + cerr << appName() << ": no service name specified." << endl; + return EXIT_FAILURE; + } + + try + { + manager->stopService(*r); + } + catch(const IceBox::NoSuchServiceException&) + { + cerr << appName() << ": unknown service `" << *r << "'" << endl; + } + catch(const IceBox::AlreadyStoppedException&) + { + cerr << appName() << ": service already stopped." << endl; + } + } else { cerr << appName() << ": unknown command `" << *r << "'" << endl; |