summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Application.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2017-03-28 10:06:55 -0400
committerBernard Normier <bernard@zeroc.com>2017-03-28 10:06:55 -0400
commitdb5588f918abf3e2c0fa1d52b84077af73921706 (patch)
treeb5c59119c69631bf20d207823b9db0d536020db7 /cpp/src/Ice/Application.cpp
parentFixed ICE-7673 - use continations and await in Ice/dispatcher test (diff)
downloadice-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.cpp74
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;
//