Skip to content

Commit

Permalink
Rework printTarget to show non-IP transport (#3517)
Browse files Browse the repository at this point in the history
  • Loading branch information
bernardnormier authored Feb 7, 2025
1 parent 6f102aa commit 33a5d64
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 40 deletions.
27 changes: 19 additions & 8 deletions cpp/src/Ice/LoggerMiddleware.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,18 +133,29 @@ LoggerMiddleware::printTarget(LoggerOutputBase& out, const Current& current) con
{
out << " -f " << escapeString(current.facet, "", _toStringMode);
}
out << " over ";

if (current.con)
{
for (ConnectionInfoPtr connInfo = current.con->getInfo(); connInfo; connInfo = connInfo->underlying)
ConnectionInfoPtr connInfo = current.con->getInfo();
while (connInfo->underlying)
{
auto ipConnInfo = dynamic_pointer_cast<IPConnectionInfo>(connInfo);
if (ipConnInfo)
{
out << " over " << ipConnInfo->localAddress << ':' << ipConnInfo->localPort << "<->"
<< ipConnInfo->remoteAddress << ':' << ipConnInfo->remotePort;
break;
}
connInfo = connInfo->underlying;
}

if (auto ipConnInfo = dynamic_pointer_cast<IPConnectionInfo>(connInfo))
{
out << ipConnInfo->localAddress << ':' << ipConnInfo->localPort << "<->" << ipConnInfo->remoteAddress << ':'
<< ipConnInfo->remotePort;
}
else
{
// Connection::toString returns a multiline string, so we just use type() here for bt and similar.
out << current.con->type();
}
}
else
{
out << "colloc";
}
}
40 changes: 23 additions & 17 deletions csharp/src/Ice/Internal/LoggerMiddleware.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,29 +122,35 @@ private void printTarget(StringBuilder sb, Current current)
sb.Append(Ice.UtilInternal.StringUtil.escapeString(current.facet, "", _toStringMode));
}

sb.Append(" over ");

if (current.con is not null)
{
try
ConnectionInfo connInfo = current.con.getInfo();
while (connInfo.underlying is not null)
{
for (ConnectionInfo? p = current.con.getInfo(); p is not null; p = p.underlying)
{
if (p is IPConnectionInfo ipInfo)
{
sb.Append(" over ");
sb.Append(ipInfo.localAddress);
sb.Append(':');
sb.Append(ipInfo.localPort);
sb.Append("<->");
sb.Append(ipInfo.remoteAddress);
sb.Append(':');
sb.Append(ipInfo.remotePort);
break;
}
}
connInfo = connInfo.underlying;
}

if (connInfo is IPConnectionInfo ipConnInfo)
{
sb.Append(ipConnInfo.localAddress);
sb.Append(':');
sb.Append(ipConnInfo.localPort);
sb.Append("<->");
sb.Append(ipConnInfo.remoteAddress);
sb.Append(':');
sb.Append(ipConnInfo.remotePort);
}
catch (LocalException)
else
{
// Connection.ToString() returns a multiline string, so we just use type here for bt and similar.
sb.Append(current.con.type());
}
}
else
{
sb.Append("colloc");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -119,23 +119,27 @@ private void printTarget(OutputBase out, Current current) {
out.print(" -f ");
out.print(StringUtil.escapeString(current.facet, "", _toStringMode));
}
out.print(" over ");

if (current.con != null) {
try {
for (ConnectionInfo connInfo = current.con.getInfo();
connInfo != null;
connInfo = connInfo.underlying) {
if (connInfo instanceof IPConnectionInfo ipConnInfo) {
out.print(" over ");
out.print(ipConnInfo.localAddress);
out.print(":" + ipConnInfo.localPort);
out.print("<->");
out.print(ipConnInfo.remoteAddress);
out.print(":" + ipConnInfo.remotePort);
}
}
} catch (LocalException exc) {
// Ignore.
ConnectionInfo connInfo = current.con.getInfo();
while (connInfo.underlying != null) {
connInfo = connInfo.underlying;
}

if (connInfo instanceof IPConnectionInfo ipConnInfo) {
out.print(ipConnInfo.localAddress);
out.print(":" + ipConnInfo.localPort);
out.print("<->");
out.print(ipConnInfo.remoteAddress);
out.print(":" + ipConnInfo.remotePort);
} else {
// Connection.toString() returns a multiline string, so we just use type() here
// for bt and similar.
out.print(current.con.type());
}
} else {
out.print("colloc");
}
}
}

0 comments on commit 33a5d64

Please sign in to comment.