summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/IceGridRegistry.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-04-01 15:42:10 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-04-01 15:42:10 +0000
commitf496752b90c2d5c9099b7dbca383bd30820a6ebd (patch)
treedaba3e307aea127eccb2b1c50fe9353f18f1ca05 /cpp/src/IceGrid/IceGridRegistry.cpp
parentObjectNotExistException is now retried. (diff)
downloadice-f496752b90c2d5c9099b7dbca383bd30820a6ebd.tar.bz2
ice-f496752b90c2d5c9099b7dbca383bd30820a6ebd.tar.xz
ice-f496752b90c2d5c9099b7dbca383bd30820a6ebd.zip
Copied IcePack code to IceGrid.
Diffstat (limited to 'cpp/src/IceGrid/IceGridRegistry.cpp')
-rw-r--r--cpp/src/IceGrid/IceGridRegistry.cpp156
1 files changed, 156 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/IceGridRegistry.cpp b/cpp/src/IceGrid/IceGridRegistry.cpp
new file mode 100644
index 00000000000..bcc320a213f
--- /dev/null
+++ b/cpp/src/IceGrid/IceGridRegistry.cpp
@@ -0,0 +1,156 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceUtil/Options.h>
+#include <Ice/Ice.h>
+#include <Ice/Service.h>
+#include <IceGrid/Registry.h>
+
+using namespace std;
+using namespace Ice;
+using namespace IceGrid;
+
+namespace IceGrid
+{
+
+class RegistryService : public Service
+{
+public:
+
+ RegistryService();
+
+protected:
+
+ virtual bool start(int, char*[]);
+ virtual CommunicatorPtr initializeCommunicator(int&, char*[]);
+
+private:
+
+ void usage(const std::string&);
+
+ RegistryPtr _registry;
+};
+
+} // End of namespace IceGrid
+
+RegistryService::RegistryService()
+{
+}
+
+bool
+RegistryService::start(int argc, char* argv[])
+{
+ bool nowarn;
+
+ IceUtil::Options opts;
+ opts.addOpt("h", "help");
+ opts.addOpt("v", "version");
+ opts.addOpt("", "nowarn");
+
+ vector<string> args;
+ try
+ {
+ args = opts.parse(argc, argv);
+ }
+ catch(const IceUtil::Options::BadOpt& e)
+ {
+ error(e.reason);
+ usage(argv[0]);
+ return false;
+ }
+
+ if(opts.isSet("h") || opts.isSet("help"))
+ {
+ usage(argv[0]);
+ return false;
+ }
+ if(opts.isSet("v") || opts.isSet("version"))
+ {
+ print(ICE_STRING_VERSION);
+ return false;
+ }
+ nowarn = opts.isSet("nowarn");
+
+ if(!args.empty())
+ {
+ usage(argv[0]);
+ return false;
+ }
+
+ _registry = new Registry(communicator());
+ if(!_registry->start(nowarn))
+ {
+ return false;
+ }
+
+ return true;
+}
+
+CommunicatorPtr
+RegistryService::initializeCommunicator(int& argc, char* argv[])
+{
+ PropertiesPtr defaultProperties = getDefaultProperties(argc, argv);
+
+ //
+ // Make sure that IceGridRegistry doesn't use thread-per-connection.
+ //
+ defaultProperties->setProperty("Ice.ThreadPerConnection", "");
+
+ return Service::initializeCommunicator(argc, argv);
+}
+
+void
+RegistryService::usage(const string& appName)
+{
+ string options =
+ "Options:\n"
+ "-h, --help Show this message.\n"
+ "-v, --version Display the Ice version.\n"
+ "--nowarn Don't print any security warnings.";
+#ifdef _WIN32
+ if(checkSystem())
+ {
+ options.append(
+ "\n"
+ "\n"
+ "--service NAME Run as the Windows service NAME.\n"
+ "\n"
+ "--install NAME [--display DISP] [--executable EXEC] [args]\n"
+ " Install as Windows service NAME. If DISP is\n"
+ " provided, use it as the display name,\n"
+ " otherwise NAME is used. If EXEC is provided,\n"
+ " use it as the service executable, otherwise\n"
+ " this executable is used. Any additional\n"
+ " arguments are passed unchanged to the\n"
+ " service at startup.\n"
+ "--uninstall NAME Uninstall Windows service NAME.\n"
+ "--start NAME [args] Start Windows service NAME. Any additional\n"
+ " arguments are passed unchanged to the\n"
+ " service.\n"
+ "--stop NAME Stop Windows service NAME."
+ );
+ }
+#else
+ options.append(
+ "\n"
+ "\n"
+ "--daemon Run as a daemon.\n"
+ "--noclose Do not close open file descriptors.\n"
+ "--nochdir Do not change the current working directory."
+ );
+#endif
+ print("Usage: " + appName + " [options]\n" + options);
+}
+
+int
+main(int argc, char* argv[])
+{
+ RegistryService svc;
+ return svc.main(argc, argv);
+}