diff options
author | Bernard Normier <bernard@zeroc.com> | 2017-03-28 10:06:55 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2017-03-28 10:06:55 -0400 |
commit | db5588f918abf3e2c0fa1d52b84077af73921706 (patch) | |
tree | b5c59119c69631bf20d207823b9db0d536020db7 /cpp/src/Ice/Application.cpp | |
parent | Fixed ICE-7673 - use continations and await in Ice/dispatcher test (diff) | |
download | ice-db5588f918abf3e2c0fa1d52b84077af73921706.tar.bz2 ice-db5588f918abf3e2c0fa1d52b84077af73921706.tar.xz ice-db5588f918abf3e2c0fa1d52b84077af73921706.zip |
ICE-7707 Improved handling of argc/argv arguments
Added configFile overload to Ice::initialize and CommunicatorHolder in C++
Diffstat (limited to 'cpp/src/Ice/Application.cpp')
-rw-r--r-- | cpp/src/Ice/Application.cpp | 74 |
1 files changed, 34 insertions, 40 deletions
diff --git a/cpp/src/Ice/Application.cpp b/cpp/src/Ice/Application.cpp index 1097e6ab91c..ea9b3588d67 100644 --- a/cpp/src/Ice/Application.cpp +++ b/cpp/src/Ice/Application.cpp @@ -68,12 +68,8 @@ Ice::Application::~Application() } int -Ice::Application::main(int argc, char* argv[], const char* configFile) +Ice::Application::main(int argc, const char* const argv[], ICE_CONFIG_FILE_STRING configFile, int version) { - // - // We don't call the main below to avoid a deprecated warning - // - _appName = ""; if(argc > 0) { @@ -86,7 +82,9 @@ Ice::Application::main(int argc, char* argv[], const char* configFile) } InitializationData initData; +#ifndef ICE_CPP11_MAPPING if(configFile) +#endif { try { @@ -106,31 +104,29 @@ Ice::Application::main(int argc, char* argv[], const char* configFile) return EXIT_FAILURE; } } - return main(argc, argv, initData); + return main(argc, argv, initData, version); } #ifdef _WIN32 - -int -Ice::Application::main(int argc, wchar_t* argv[], const char* config) -{ - return main(argsToStringSeq(argc, argv), config); -} - int -Ice::Application::main(int argc, wchar_t* argv[], const Ice::InitializationData& initData) +Ice::Application::main(int argc, const wchar_t* const argv[], const Ice::InitializationData& initData, int version) { // // On Windows the given wchar_t* strings are UTF16 and therefore - // needs to be converted to native narow string encoding. + // needs to be converted to native narrow string encoding. // - return main(argsToStringSeq(argc, argv), initData); + return main(argsToStringSeq(argc, argv), initData, version); } +int +Ice::Application::main(int argc, const wchar_t* const argv[], ICE_CONFIG_FILE_STRING config, int version) +{ + return main(argsToStringSeq(argc, argv), config, version); +} #endif int -Ice::Application::main(int argc, char* argv[], const InitializationData& initializationData) +Ice::Application::main(int argc, const char* const argv[], const InitializationData& initializationData, int version) { if(argc > 0 && argv[0] && ICE_DYNAMIC_CAST(LoggerI, getProcessLogger())) { @@ -148,13 +144,15 @@ Ice::Application::main(int argc, char* argv[], const InitializationData& initial } int status; + ArgVector av(argc, argv); // copy args + // // We parse the properties here to extract Ice.ProgramName. // InitializationData initData = initializationData; try { - initData.properties = createProperties(argc, argv, initData.properties); + initData.properties = createProperties(av.argc, av.argv, initData.properties); } catch(const std::exception& ex) { @@ -188,7 +186,7 @@ Ice::Application::main(int argc, char* argv[], const InitializationData& initial CtrlCHandler ctrCHandler; _ctrlCHandler = &ctrCHandler; - status = doMain(argc, argv, initData); + status = doMain(av.argc, av.argv, initData, version); // // Set _ctrlCHandler to 0 only once communicator->destroy() has completed. @@ -204,38 +202,24 @@ Ice::Application::main(int argc, char* argv[], const InitializationData& initial } else { - status = doMain(argc, argv, initData); + status = doMain(av.argc, av.argv, initData, version); } return status; } int -Ice::Application::main(int argc, char* const argv[], const char* configFile) -{ - ArgVector av(argc, argv); - return main(av.argc, av.argv, configFile); -} - -int -Ice::Application::main(int argc, char* const argv[], const Ice::InitializationData& initData) -{ - ArgVector av(argc, argv); - return main(av.argc, av.argv, initData); -} - -int -Ice::Application::main(const StringSeq& args, const char* configFile) +Ice::Application::main(const StringSeq& args, const InitializationData& initData, int version) { ArgVector av(args); - return main(av.argc, av.argv, configFile); + return main(av.argc, av.argv, initData, version); } int -Ice::Application::main(const StringSeq& args, const InitializationData& initData) +Ice::Application::main(const StringSeq& args, ICE_CONFIG_FILE_STRING configFile, int version) { ArgVector av(args); - return main(av.argc, av.argv, initData); + return main(av.argc, av.argv, configFile, version); } void @@ -410,7 +394,7 @@ Ice::Application::interrupted() } int -Ice::Application::doMain(int argc, char* argv[], const InitializationData& initData) +Ice::Application::doMain(int argc, char* argv[], const InitializationData& initData, int version) { int status; @@ -431,7 +415,17 @@ Ice::Application::doMain(int argc, char* argv[], const InitializationData& initD setProcessLogger(ICE_MAKE_SHARED(LoggerI, initData.properties->getProperty("Ice.ProgramName"), "", convert)); } - _communicator = initialize(argc, argv, initData); + if(argc >= 0) + { + _communicator = initialize(argc, argv, initData, version); + } + else + { + // + // argc < 0 means use arg-less version of initialize + // + _communicator = initialize(initData, version); + } _destroyed = false; // |