diff options
Diffstat (limited to 'cpp/test/Ice/faultTolerance/Server.cpp')
-rw-r--r-- | cpp/test/Ice/faultTolerance/Server.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/cpp/test/Ice/faultTolerance/Server.cpp b/cpp/test/Ice/faultTolerance/Server.cpp new file mode 100644 index 00000000000..00fcdbea2e8 --- /dev/null +++ b/cpp/test/Ice/faultTolerance/Server.cpp @@ -0,0 +1,104 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <TestI.h> +#include <sstream> + +using namespace std; + +void +usage(const char* n) +{ + cerr << "Usage: " << n << " [--pid] port\n"; +} + +int +run(int argc, char* argv[], Ice::CommunicatorPtr communicator) +{ + int port = 0; + bool pid = false; + for (int i = 1; i < argc; ++i) + { + if(strcmp(argv[i], "--pid") == 0) + { + pid = true; + } + else if (argv[i][0] == '-') + { + cerr << argv[0] << ": unknown option `" << argv[i] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + + if (port > 0) + { + cerr << argv[0] << ": only one port can be specified" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + + port = atoi(argv[i]); + } + + if (port <= 0) + { + cerr << argv[0] << ": no port specified" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + + ostringstream endpts; + endpts << "tcp -p " << port; + Ice::ObjectAdapterPtr adapter = communicator -> createObjectAdapterWithEndpoints("testadapter", endpts.str()); + Ice::ObjectPtr object = new TestI(adapter); + adapter->add(object, "test"); + adapter->activate(); + if (pid) + { + cout << getpid() << endl; + } + communicator->waitForShutdown(); + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + Ice::CommunicatorPtr communicator; + + try + { + communicator = Ice::initialize(argc, argv); + status = run(argc, argv, communicator); + + } + catch(const Ice::LocalException& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if (communicator) + { + try + { + communicator->destroy(); + } + catch(const Ice::LocalException& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} |