Stream dumpHex output to an output stream.

Also output debug directly to stderr to avoid std::cerr re-direction.

Change-Id: Ib2a0eaa3514ef88d7fe8d8fbb3706925aabf3346
This commit is contained in:
Michael Meeks 2017-05-12 03:01:28 +01:00
parent 024e786e85
commit 29b92444b1
2 changed files with 21 additions and 14 deletions

View file

@ -138,30 +138,37 @@ void SocketDisposition::execute()
namespace { namespace {
void dump_hex (const char *legend, const char *prefix, std::vector<char> buffer) void dump_hex (std::ostream &os, const char *legend, const char *prefix, std::vector<char> buffer)
{ {
unsigned int i, j; unsigned int i, j;
fprintf (stderr, "%s", legend); char scratch[64];
os << legend;
for (j = 0; j < buffer.size() + 15; j += 16) for (j = 0; j < buffer.size() + 15; j += 16)
{ {
fprintf (stderr, "%s0x%.4x ", prefix, j); sprintf (scratch, "%s0x%.4x ", prefix, j);
os << scratch;
for (i = 0; i < 16; i++) for (i = 0; i < 16; i++)
{ {
if ((j + i) < buffer.size()) if ((j + i) < buffer.size())
fprintf (stderr, "%.2x ", (unsigned char)buffer[j+i]); sprintf (scratch, "%.2x ", (unsigned char)buffer[j+i]);
else else
fprintf (stderr, " "); sprintf (scratch, " ");
os << scratch;
if (i == 8) if (i == 8)
fprintf (stderr, " "); os << " ";
} }
fprintf (stderr, " | "); os << " | ";
for (i = 0; i < 16; i++) for (i = 0; i < 16; i++)
{
if ((j + i) < buffer.size() && ::isprint(buffer[j+i])) if ((j + i) < buffer.size() && ::isprint(buffer[j+i]))
fprintf (stderr, "%c", buffer[j+i]); sprintf (scratch, "%c", buffer[j+i]);
else else
fprintf (stderr, "."); sprintf (scratch, ".");
fprintf (stderr, "\n"); os << scratch;
}
os << "\n";
} }
} }
@ -172,7 +179,7 @@ void WebSocketHandler::dumpState(std::ostream& os)
os << (_shuttingDown ? "shutd " : "alive ") os << (_shuttingDown ? "shutd " : "alive ")
<< std::setw(5) << 1.0*_pingTimeUs/1000 << "ms "; << std::setw(5) << 1.0*_pingTimeUs/1000 << "ms ";
if (_wsPayload.size() > 0) if (_wsPayload.size() > 0)
dump_hex("\t\tws queued payload:\n", "\t\t", _wsPayload); dump_hex(os, "\t\tws queued payload:\n", "\t\t", _wsPayload);
} }
void StreamSocket::dumpState(std::ostream& os) void StreamSocket::dumpState(std::ostream& os)
@ -183,9 +190,9 @@ void StreamSocket::dumpState(std::ostream& os)
<< _inBuffer.size() << "\t" << _outBuffer.size() << "\t"; << _inBuffer.size() << "\t" << _outBuffer.size() << "\t";
_socketHandler->dumpState(os); _socketHandler->dumpState(os);
if (_inBuffer.size() > 0) if (_inBuffer.size() > 0)
dump_hex("\t\tinBuffer:\n", "\t\t", _inBuffer); dump_hex(os, "\t\tinBuffer:\n", "\t\t", _inBuffer);
if (_outBuffer.size() > 0) if (_outBuffer.size() > 0)
dump_hex("\t\toutBuffer:\n", "\t\t", _inBuffer); dump_hex(os, "\t\toutBuffer:\n", "\t\t", _inBuffer);
} }
void StreamSocket::send(Poco::Net::HTTPResponse& response) void StreamSocket::send(Poco::Net::HTTPResponse& response)

View file

@ -2647,7 +2647,7 @@ void dump_state()
srv.dumpState(oss); srv.dumpState(oss);
const std::string msg = oss.str(); const std::string msg = oss.str();
std::cerr << msg << std::endl; fprintf(stderr, "%s\n", msg.c_str());
LOG_TRC(msg); LOG_TRC(msg);
} }