From 6fab87fa4ce1e2d85cbd69c14a8128009bc04218 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Fri, 19 Jan 2024 17:37:40 -0800 Subject: [PATCH] [wpinet] uv::Stream: Add logging for Write and TryWrite --- wpinet/src/main/native/cpp/uv/Stream.cpp | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/wpinet/src/main/native/cpp/uv/Stream.cpp b/wpinet/src/main/native/cpp/uv/Stream.cpp index e054003405..164b30ac2e 100644 --- a/wpinet/src/main/native/cpp/uv/Stream.cpp +++ b/wpinet/src/main/native/cpp/uv/Stream.cpp @@ -4,7 +4,9 @@ #include "wpinet/uv/Stream.h" +#include #include +#include using namespace wpi; using namespace wpi::uv; @@ -86,11 +88,38 @@ void Stream::StartRead() { }); } +static std::string BufsToString(std::span bufs) { + std::string str; + wpi::raw_string_ostream stros{str}; + size_t count = 0; + for (auto buf : bufs) { + for (auto ch : buf.bytes()) { + stros << fmt::format("{:02x},", static_cast(ch) & 0xff); + if (count++ > 30) { + goto extra; + } + } + } + goto done; +extra: { + size_t total = 0; + for (auto buf : bufs) { + total += buf.len; + } + stros << fmt::format("... (total {})", total); +} +done: + return str; +} + void Stream::Write(std::span bufs, const std::shared_ptr& req) { if (IsLoopClosing()) { return; } + if (auto logger = GetLogger()) { + WPI_DEBUG4(*logger, "uv::Write({})", BufsToString(bufs)); + } if (Invoke(&uv_write, req->GetRaw(), GetRawStream(), bufs.data(), bufs.size(), [](uv_write_t* r, int status) { auto& h = *static_cast(r->data); @@ -113,6 +142,9 @@ int Stream::TryWrite(std::span bufs) { if (IsLoopClosing()) { return UV_ECANCELED; } + if (auto logger = GetLogger()) { + WPI_DEBUG4(*logger, "uv::TryWrite({})", BufsToString(bufs)); + } int val = uv_try_write(GetRawStream(), bufs.data(), bufs.size()); if (val == UV_EAGAIN) { return 0;