summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Instance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Instance.cpp')
-rw-r--r--cpp/src/Ice/Instance.cpp74
1 files changed, 38 insertions, 36 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index b407284e2a9..9550e536180 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -513,8 +513,8 @@ IceInternal::Instance::stringToIdentity(const string& s) const
}
}
- ident.name = Ice::UTF8ToNative(_initData.stringConverter, ident.name);
- ident.category = Ice::UTF8ToNative(_initData.stringConverter, ident.category);
+ ident.name = UTF8ToNative(_stringConverter, ident.name);
+ ident.category = UTF8ToNative(_stringConverter, ident.category);
return ident;
}
@@ -526,8 +526,8 @@ IceInternal::Instance::identityToString(const Identity& ident) const
// This method returns the stringified identity. The returned string only
// contains printable ascii. It can contain UTF8 in the escaped form.
//
- string name = Ice::nativeToUTF8(_initData.stringConverter, ident.name);
- string category = Ice::nativeToUTF8(_initData.stringConverter, ident.category);
+ string name = nativeToUTF8(_stringConverter, ident.name);
+ string category = nativeToUTF8(_stringConverter, ident.category);
if(category.empty())
{
@@ -788,21 +788,28 @@ IceInternal::Instance::setDefaultRouter(const Ice::RouterPrx& defaultRouter)
}
void
-IceInternal::Instance::setStringConverter(const Ice::StringConverterPtr& stringConverter)
+IceInternal::Instance::setStringConverter(const IceUtil::StringConverterPtr& stringConverter)
{
//
// No locking, as it can only be called during plug-in loading
//
- _initData.stringConverter = stringConverter;
+ _stringConverter = stringConverter;
}
void
-IceInternal::Instance::setWstringConverter(const Ice::WstringConverterPtr& wstringConverter)
+IceInternal::Instance::setWstringConverter(const IceUtil::WstringConverterPtr& wstringConverter)
{
//
// No locking, as it can only be called during plug-in loading
//
- _initData.wstringConverter = wstringConverter;
+ if(wstringConverter == 0)
+ {
+ _wstringConverter = new IceUtil::UnicodeWstringConverter;
+ }
+ else
+ {
+ _wstringConverter = wstringConverter;
+ }
}
void
@@ -823,13 +830,22 @@ IceInternal::Instance::setThreadHook(const Ice::ThreadNotificationPtr& threadHoo
_initData.threadHook = threadHook;
}
+namespace
+{
+
+bool logStdErrConvert = true;
+
+}
+
IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const InitializationData& initData) :
_state(StateActive),
_initData(initData),
_messageSizeMax(0),
_clientACM(0),
_serverACM(0),
- _implicitContext(0)
+ _implicitContext(0),
+ _stringConverter(IceUtil::getProcessStringConverter()),
+ _wstringConverter(IceUtil::getProcessWstringConverter())
{
try
{
@@ -853,17 +869,7 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
if(stdOutFilename != "")
{
-#ifdef _LARGEFILE64_SOURCE
- FILE* file = freopen64(stdOutFilename.c_str(), "a", stdout);
-#else
-#ifdef _WIN32
- FILE* file = _wfreopen(IceUtil::stringToWstring(nativeToUTF8(_initData.stringConverter,
- stdOutFilename)).c_str(),
- L"a", stdout);
-#else
- FILE* file = freopen(stdOutFilename.c_str(), "a", stdout);
-#endif
-#endif
+ FILE* file = IceUtilInternal::freopen(stdOutFilename, "a", stdout);
if(file == 0)
{
FileException ex(__FILE__, __LINE__);
@@ -875,17 +881,7 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
if(stdErrFilename != "")
{
-#ifdef _LARGEFILE64_SOURCE
- FILE* file = freopen64(stdErrFilename.c_str(), "a", stderr);
-#else
-#ifdef _WIN32
- FILE* file = _wfreopen(IceUtil::stringToWstring(nativeToUTF8(_initData.stringConverter,
- stdErrFilename)).c_str(),
- L"a", stderr);
-#else
- FILE* file = freopen(stdErrFilename.c_str(), "a", stderr);
-#endif
-#endif
+ FILE* file = IceUtilInternal::freopen(stdErrFilename, "a", stderr);
if(file == 0)
{
FileException ex(__FILE__, __LINE__);
@@ -957,7 +953,6 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
if(instanceCount == 1)
{
-
#if defined(_WIN32) && !defined(ICE_OS_WINRT)
WORD version = MAKEWORD(1, 1);
WSADATA data;
@@ -984,6 +979,10 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
}
openlog(identForOpenlog.c_str(), LOG_PID, LOG_USER);
}
+#else
+ logStdErrConvert =
+ initData.properties->getPropertyAsIntWithDefault("Ice.LogStdErr.Convert", 1) == 1 &&
+ initData.properties->getProperty("Ice.StdErr").empty();
#endif
}
}
@@ -1008,12 +1007,15 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
#endif
if(!logfile.empty())
{
- _initData.logger = new LoggerI(_initData.properties->getProperty("Ice.ProgramName"),
- nativeToUTF8(_initData.stringConverter, logfile));
+ _initData.logger = new LoggerI(_initData.properties->getProperty("Ice.ProgramName"), logfile);
}
else
{
_initData.logger = getProcessLogger();
+ if(LoggerIPtr::dynamicCast(_initData.logger))
+ {
+ _initData.logger = new LoggerI("", "", logStdErrConvert, _stringConverter);
+ }
}
}
@@ -1123,9 +1125,9 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
_retryQueue = new RetryQueue(this);
- if(_initData.wstringConverter == 0)
+ if(_wstringConverter == 0)
{
- _initData.wstringConverter = new UnicodeWstringConverter();
+ _wstringConverter = new IceUtil::UnicodeWstringConverter();
}
//