diff options
Diffstat (limited to 'cpp/src/Ice/InstrumentationI.cpp')
-rw-r--r-- | cpp/src/Ice/InstrumentationI.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/cpp/src/Ice/InstrumentationI.cpp b/cpp/src/Ice/InstrumentationI.cpp index 6fbedad641f..62f8bda1285 100644 --- a/cpp/src/Ice/InstrumentationI.cpp +++ b/cpp/src/Ice/InstrumentationI.cpp @@ -74,6 +74,20 @@ struct ThreadStateChanged ThreadState newState; }; +IPConnectionInfo* +getIPConnectionInfo(const ConnectionInfoPtr& info) +{ + for(ConnectionInfoPtr p = info; p; p = p->underlying) + { + IPConnectionInfo* ipInfo = dynamic_cast<IPConnectionInfo*>(p.get()); + if(ipInfo) + { + return ipInfo; + } + } + return ICE_NULLPTR; +} + class ConnectionHelper : public MetricsHelperT<ConnectionMetrics> { public: @@ -108,7 +122,7 @@ public: if(_id.empty()) { ostringstream os; - IPConnectionInfoPtr info = ICE_DYNAMIC_CAST(IPConnectionInfo, _connectionInfo); + IPConnectionInfo* info = getIPConnectionInfo(_connectionInfo); if(info) { os << info->localAddress << ':' << info->localPort; |