diff options
author | Marc Laukien <marc@zeroc.com> | 2001-08-15 17:21:39 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-08-15 17:21:39 +0000 |
commit | 7aff96f568e834c4c13f26a46843d5ecbb1d325d (patch) | |
tree | e801f83704b85d59f80f1516576c3f91290f6d31 /cpp/src/IcePack/Server.cpp | |
parent | fix (diff) | |
download | ice-7aff96f568e834c4c13f26a46843d5ecbb1d325d.tar.bz2 ice-7aff96f568e834c4c13f26a46843d5ecbb1d325d.tar.xz ice-7aff96f568e834c4c13f26a46843d5ecbb1d325d.zip |
IcePack ; restructuring
Diffstat (limited to 'cpp/src/IcePack/Server.cpp')
-rw-r--r-- | cpp/src/IcePack/Server.cpp | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/cpp/src/IcePack/Server.cpp b/cpp/src/IcePack/Server.cpp new file mode 100644 index 00000000000..cfc5c19904c --- /dev/null +++ b/cpp/src/IcePack/Server.cpp @@ -0,0 +1,143 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <AdminI.h> +#include <Forward.h> + +using namespace std; +using namespace Ice; +using namespace IcePack; + +void +usage(const char* n) +{ + cerr << "Usage: " << n << " [options]\n"; + cerr << + "Options:\n" + "-h, --help Show this message.\n" + "-v, --version Display the Ice version.\n" + "--forward ENDPOINTS Use ENDPOINTS as endpoints for the forwarder.\n" + "--admin ENDPOINTS Enable administrative endpoints and set them to ENDPOINTS.\n" + ; +} + +int +run(int argc, char* argv[], CommunicatorPtr communicator) +{ + PropertiesPtr properties = communicator->getProperties(); + + string adminEndpoints = properties->getProperty("Ice.Adapter.Admin.Endpoints"); + if(adminEndpoints.length() != 0) + { + cerr << argv[0] << ": warning: administrative endpoints `Ice.Adapter.Admin.Endpoints' enabled" << endl; + } + + string forwardEndpoints = properties->getProperty("Ice.Adapter.Forward.Endpoints"); + if(forwardEndpoints.length() == 0) + { + cerr << argv[0] << ": `Ice.Adapter.Forward.Endpoints' property is not set" << endl; + return EXIT_FAILURE; + } + + AdminPtr admin = new AdminI; + ObjectLocatorPtr forward = new Forward(admin); + + if (adminEndpoints.length() != 0) + { + ObjectAdapterPtr adminAdapter = communicator->createObjectAdapter("Admin"); + adminAdapter->add(admin, "admin"); + adminAdapter->activate(); + } + + ObjectAdapterPtr forwardAdapter = communicator->createObjectAdapter("Forward"); + forwardAdapter->setObjectLocator(forward); + forwardAdapter->activate(); + + communicator->waitForShutdown(); + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + PropertiesPtr properties = getDefaultProperties(); + + for (int i = 1; i < argc; ++i) + { + if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) + { + usage(argv[0]); + return EXIT_SUCCESS; + } + else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) + { + cout << ICE_STRING_VERSION << endl; + return EXIT_SUCCESS; + } + else if (strcmp(argv[i], "--forward") == 0) + { + if (i + 1 >= argc) + { + cerr << argv[0] << ": argument expected for`" << argv[i] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + + properties->setProperty("Ice.Adapter.Forward.Endpoints", argv[++i]); + } + else if (strcmp(argv[i], "--admin") == 0) + { + if (i + 1 >= argc) + { + cerr << argv[0] << ": argument expected for`" << argv[i] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + + properties->setProperty("Ice.Adapter.Admin.Endpoints", argv[++i]); + } + else + { + cerr << argv[0] << ": unknown option `" << argv[i] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + } + + int status; + CommunicatorPtr communicator; + + try + { + communicator = initializeWithProperties(argc, argv, properties); + status = run(argc, argv, communicator); + } + catch(const LocalException& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if (communicator) + { + try + { + communicator->destroy(); + } + catch(const LocalException& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} |