summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/LoggerAdminI.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2014-10-24 15:17:10 -0400
committerBernard Normier <bernard@zeroc.com>2014-10-24 15:17:10 -0400
commit5b5beaa364041143138ab73fff4b2c1a88dd1db3 (patch)
treeaa6fa40d0db22e56ee4ce3e7be16d2e854e6cf41 /cpp/src/Ice/LoggerAdminI.cpp
parentC++11 build updates (diff)
downloadice-5b5beaa364041143138ab73fff4b2c1a88dd1db3.tar.bz2
ice-5b5beaa364041143138ab73fff4b2c1a88dd1db3.tar.xz
ice-5b5beaa364041143138ab73fff4b2c1a88dd1db3.zip
Fixed leak of LoggerAdmin's logger (ICE-5788) and updated Java to use similar code.
Diffstat (limited to 'cpp/src/Ice/LoggerAdminI.cpp')
-rw-r--r--cpp/src/Ice/LoggerAdminI.cpp27
1 files changed, 6 insertions, 21 deletions
diff --git a/cpp/src/Ice/LoggerAdminI.cpp b/cpp/src/Ice/LoggerAdminI.cpp
index c4d61f31d5c..836f0522225 100644
--- a/cpp/src/Ice/LoggerAdminI.cpp
+++ b/cpp/src/Ice/LoggerAdminI.cpp
@@ -105,9 +105,6 @@ private:
};
RemoteLoggerMap _remoteLoggerMap;
-
- const CallbackPtr _initCompleted;
-
CommunicatorPtr _sendLogCommunicator;
bool _destroyed;
};
@@ -168,7 +165,6 @@ private:
bool _destroyed;
IceUtil::ThreadPtr _sendLogThread;
std::deque<JobPtr> _jobQueue;
- const CallbackPtr _logCompleted;
};
typedef IceUtil::Handle<LoggerAdminLoggerI> LoggerAdminLoggerIPtr;
@@ -318,15 +314,8 @@ LoggerAdminI::LoggerAdminI(const PropertiesPtr& props) :
_traceCount(0),
_maxTraceCount(props->getPropertyAsIntWithDefault("Ice.Admin.Logger.KeepTraces", 100)),
_traceLevel(props->getPropertyAsInt("Ice.Trace.Admin.Logger")),
-#if !defined(_MSC_VER) || (_MSC_VER >= 1700)
- _initCompleted(newCallback(this, &LoggerAdminI::initCompleted)),
-#endif
_destroyed(false)
{
-#if defined(_MSC_VER) && (MSV_VER < 1700)
- const_cast<CallbackPtr&>(_initCompleted) = newCallback(this, &LoggerAdminI::initCompleted);
-#endif
-
_oldestLog = _queue.end();
_oldestTrace = _queue.end();
}
@@ -402,9 +391,11 @@ LoggerAdminI::attachRemoteLogger(const RemoteLoggerPrx& prx,
filterLogMessages(initLogMessages, filters.messageTypes, filters.traceCategories, messageMax);
}
+ CallbackPtr initCompletedCb = newCallback(this, &LoggerAdminI::initCompleted);
+
try
{
- remoteLogger->begin_init(logger->getPrefix(), initLogMessages, _initCompleted, logger);
+ remoteLogger->begin_init(logger->getPrefix(), initLogMessages, initCompletedCb, logger);
}
catch(const LocalException& ex)
{
@@ -636,15 +627,7 @@ LoggerAdminLoggerI::LoggerAdminLoggerI(const PropertiesPtr& props,
const LoggerPtr& localLogger) :
_loggerAdmin(new LoggerAdminI(props)),
_destroyed(false)
-#if !defined(_MSC_VER) || (_MSC_VER >= 1700)
- , _logCompleted(newCallback(this, &LoggerAdminLoggerI::logCompleted))
-#endif
{
-
-#if defined(_MSC_VER) && (MSV_VER < 1700)
- const_cast<CallbackPtr&>(_logCompleted) = newCallback(this, &LoggerAdminLoggerI::logCompleted);
-#endif
-
//
// There is currently no way to have a null local logger
//
@@ -772,6 +755,8 @@ LoggerAdminLoggerI::run()
trace << "send log thread started";
}
+ CallbackPtr logCompletedCb = newCallback(this, &LoggerAdminLoggerI::logCompleted);
+
for(;;)
{
IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
@@ -802,7 +787,7 @@ LoggerAdminLoggerI::run()
//
// *p is a proxy associated with the _sendLogCommunicator
//
- (*p)->begin_log(job->logMessage, _logCompleted);
+ (*p)->begin_log(job->logMessage, logCompletedCb);
}
catch(const LocalException& ex)
{