summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Initialize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Initialize.cpp')
-rw-r--r--cpp/src/Ice/Initialize.cpp121
1 files changed, 102 insertions, 19 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp
index 8d573d680f0..42272b3ca83 100644
--- a/cpp/src/Ice/Initialize.cpp
+++ b/cpp/src/Ice/Initialize.cpp
@@ -52,7 +52,7 @@ Init init;
}
StringSeq
-Ice::argsToStringSeq(int argc, char* argv[])
+Ice::argsToStringSeq(int argc, const char* const argv[])
{
StringSeq result;
for(int i = 0; i < argc; i++)
@@ -65,7 +65,7 @@ Ice::argsToStringSeq(int argc, char* argv[])
#ifdef _WIN32
StringSeq
-Ice::argsToStringSeq(int /*argc*/, wchar_t* argv[])
+Ice::argsToStringSeq(int /*argc*/, const wchar_t* const argv[])
{
//
// Don't need to use a wide string converter argv is expected to
@@ -73,7 +73,7 @@ Ice::argsToStringSeq(int /*argc*/, wchar_t* argv[])
//
const StringConverterPtr converter = getProcessStringConverter();
StringSeq args;
- for(int i=0; argv[i] != 0; i++)
+ for(int i = 0; argv[i] != 0; i++)
{
args.push_back(wstringToString(argv[i], converter));
}
@@ -83,7 +83,7 @@ Ice::argsToStringSeq(int /*argc*/, wchar_t* argv[])
#endif
void
-Ice::stringSeqToArgs(const StringSeq& args, int& argc, char* argv[])
+Ice::stringSeqToArgs(const StringSeq& args, int& argc, const char* argv[])
{
//
// Shift all elements in argv which are present in args to the
@@ -121,7 +121,7 @@ Ice::stringSeqToArgs(const StringSeq& args, int& argc, char* argv[])
#ifdef _WIN32
void
-Ice::stringSeqToArgs(const StringSeq& args, int& argc, wchar_t* argv[])
+Ice::stringSeqToArgs(const StringSeq& args, int& argc, const wchar_t* argv[])
{
//
// Don't need to use a wide string converter argv is expected to
@@ -177,7 +177,7 @@ Ice::createProperties(StringSeq& args, const PropertiesPtr& defaults)
}
PropertiesPtr
-Ice::createProperties(int& argc, char* argv[], const PropertiesPtr& defaults)
+Ice::createProperties(int& argc, const char* argv[], const PropertiesPtr& defaults)
{
StringSeq args = argsToStringSeq(argc, argv);
PropertiesPtr properties = createProperties(args, defaults);
@@ -187,7 +187,7 @@ Ice::createProperties(int& argc, char* argv[], const PropertiesPtr& defaults)
#ifdef _WIN32
PropertiesPtr
-Ice::createProperties(int& argc, wchar_t* argv[], const PropertiesPtr& defaults)
+Ice::createProperties(int& argc, const wchar_t* argv[], const PropertiesPtr& defaults)
{
StringSeq args = argsToStringSeq(argc, argv);
PropertiesPtr properties = createProperties(args, defaults);
@@ -234,7 +234,7 @@ Ice::ThreadHookPlugin::destroy()
namespace
{
-inline void checkIceVersion(Int version)
+inline void checkIceVersion(int version)
{
#ifndef ICE_IGNORE_VERSION
@@ -280,7 +280,7 @@ inline void checkIceVersion(Int version)
}
Ice::CommunicatorPtr
-Ice::initialize(int& argc, char* argv[], const InitializationData& initializationData, Int version)
+Ice::initialize(int& argc, const char* argv[], const InitializationData& initializationData, int version)
{
checkIceVersion(version);
@@ -292,19 +292,37 @@ Ice::initialize(int& argc, char* argv[], const InitializationData& initializatio
return communicator;
}
+Ice::CommunicatorPtr
+Ice::initialize(int& argc, const char* argv[], ICE_CONFIG_FILE_STRING configFile, int version)
+{
+ InitializationData initData;
+ initData.properties = createProperties();
+ initData.properties->load(configFile);
+ return initialize(argc, argv, initData, version);
+}
+
#ifdef _WIN32
Ice::CommunicatorPtr
-Ice::initialize(int& argc, wchar_t* argv[], const InitializationData& initializationData, Int version)
+Ice::initialize(int& argc, const wchar_t* argv[], const InitializationData& initializationData, int version)
{
Ice::StringSeq args = argsToStringSeq(argc, argv);
CommunicatorPtr communicator = initialize(args, initializationData, version);
stringSeqToArgs(args, argc, argv);
return communicator;
}
+
+Ice::CommunicatorPtr
+Ice::initialize(int& argc, const wchar_t* argv[], ICE_CONFIG_FILE_STRING configFile, int version)
+{
+ InitializationData initData;
+ initData.properties = createProperties();
+ initData.properties->load(configFile);
+ return initialize(argc, argv, initData, version);
+}
#endif
Ice::CommunicatorPtr
-Ice::initialize(StringSeq& args, const InitializationData& initializationData, Int version)
+Ice::initialize(StringSeq& args, const InitializationData& initializationData, int version)
{
IceUtilInternal::ArgVector av(args);
CommunicatorPtr communicator = initialize(av.argc, av.argv, initializationData, version);
@@ -313,7 +331,16 @@ Ice::initialize(StringSeq& args, const InitializationData& initializationData, I
}
Ice::CommunicatorPtr
-Ice::initialize(const InitializationData& initData, Int version)
+Ice::initialize(StringSeq& args, ICE_CONFIG_FILE_STRING configFile, int version)
+{
+ InitializationData initData;
+ initData.properties = createProperties();
+ initData.properties->load(configFile);
+ return initialize(args, initData, version);
+}
+
+Ice::CommunicatorPtr
+Ice::initialize(const InitializationData& initData, int version)
{
//
// We can't simply call the other initialize() because this one does NOT read
@@ -323,11 +350,20 @@ Ice::initialize(const InitializationData& initData, Int version)
CommunicatorIPtr communicator = CommunicatorI::create(initData);
int argc = 0;
- char* argv[] = { 0 };
+ const char* argv[] = { 0 };
communicator->finishSetup(argc, argv);
return communicator;
}
+Ice::CommunicatorPtr
+Ice::initialize(ICE_CONFIG_FILE_STRING configFile, int version)
+{
+ InitializationData initData;
+ initData.properties = createProperties();
+ initData.properties->load(configFile);
+ return initialize(initData, version);
+}
+
LoggerPtr
Ice::getProcessLogger()
{
@@ -357,41 +393,88 @@ Ice::registerPluginFactory(const std::string& name, PluginFactory factory, bool
PluginManagerI::registerPluginFactory(name, factory, loadOnInitialize);
}
+
+//
+// CommunicatorHolder
+//
+
#ifdef ICE_CPP11_MAPPING
Ice::CommunicatorHolder::CommunicatorHolder(shared_ptr<Communicator> communicator) :
_communicator(std::move(communicator))
{
}
-#else
+#else // C++98 mapping
+
+Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const char* argv[], const InitializationData& initData,
+ int version) :
+ _communicator(initialize(argc, argv, initData, version))
+{
+}
-Ice::CommunicatorHolder::CommunicatorHolder(int& argc, char* argv[], const InitializationData& initData, Int version) :
+Ice::CommunicatorHolder::CommunicatorHolder(int& argc, char* argv[], const InitializationData& initData, int version) :
_communicator(initialize(argc, argv, initData, version))
{
}
+Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const char* argv[], const char* configFile, int version) :
+ _communicator(initialize(argc, argv, configFile, version))
+{
+}
+
+Ice::CommunicatorHolder::CommunicatorHolder(int& argc, char* argv[], const char* configFile, int version) :
+ _communicator(initialize(argc, argv, configFile, version))
+{
+}
+
#ifdef _WIN32
-Ice::CommunicatorHolder::CommunicatorHolder(int& argc, wchar_t* argv[], const InitializationData& initData, Int version) :
+Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const wchar_t* argv[], const InitializationData& initData,
+ int version) :
+ _communicator(initialize(argc, argv, initData, version))
+{
+}
+
+Ice::CommunicatorHolder::CommunicatorHolder(int& argc, wchar_t* argv[], const InitializationData& initData,
+ int version) :
_communicator(initialize(argc, argv, initData, version))
{
}
+
+Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const wchar_t* argv[], const char* configFile, int version) :
+ _communicator(initialize(argc, argv, configFile, version))
+{
+}
+
+Ice::CommunicatorHolder::CommunicatorHolder(int& argc, wchar_t* argv[], const char* configFile, int version) :
+ _communicator(initialize(argc, argv, configFile, version))
+{
+}
#endif
-Ice::CommunicatorHolder::CommunicatorHolder(StringSeq& args, const InitializationData& initData, Int version) :
+Ice::CommunicatorHolder::CommunicatorHolder(StringSeq& args, const InitializationData& initData, int version) :
_communicator(initialize(args, initData, version))
{
}
-Ice::CommunicatorHolder::CommunicatorHolder(const InitializationData& initData, Int version) :
+Ice::CommunicatorHolder::CommunicatorHolder(StringSeq& args, const char* configFile, int version) :
+ _communicator(initialize(args, configFile, version))
+{
+}
+
+Ice::CommunicatorHolder::CommunicatorHolder(const InitializationData& initData, int version) :
_communicator(initialize(initData, version))
{
}
+Ice::CommunicatorHolder::CommunicatorHolder(const char* configFile, int version) :
+ _communicator(initialize(configFile, version))
+{
+}
+
Ice::CommunicatorHolder::CommunicatorHolder(const CommunicatorPtr& communicator) :
_communicator(communicator)
{
}
-
#endif
Ice::CommunicatorHolder::~CommunicatorHolder()