diff options
author | Bernard Normier <bernard@zeroc.com> | 2014-10-24 15:17:10 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2014-10-24 15:17:10 -0400 |
commit | 5b5beaa364041143138ab73fff4b2c1a88dd1db3 (patch) | |
tree | aa6fa40d0db22e56ee4ce3e7be16d2e854e6cf41 /cpp/src/Ice/LoggerAdminI.cpp | |
parent | C++11 build updates (diff) | |
download | ice-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.cpp | 27 |
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) { |