diff options
Diffstat (limited to 'src/zenhttp/servers/httpplugin.cpp')
| -rw-r--r-- | src/zenhttp/servers/httpplugin.cpp | 37 |
1 files changed, 9 insertions, 28 deletions
diff --git a/src/zenhttp/servers/httpplugin.cpp b/src/zenhttp/servers/httpplugin.cpp index 3eed9db8f..4a2615133 100644 --- a/src/zenhttp/servers/httpplugin.cpp +++ b/src/zenhttp/servers/httpplugin.cpp @@ -2,6 +2,8 @@ #include <zenhttp/httpplugin.h> +#include "httptracer.h" + #if ZEN_WITH_PLUGINS # include "httpparser.h" @@ -103,8 +105,6 @@ struct HttpPluginServerImpl : public HttpPluginServer, TransportServer HttpService* RouteRequest(std::string_view Url); - void WriteDebugPayload(std::string_view Filename, const std::span<const IoBuffer> Payload); - struct ServiceEntry { std::string ServiceUrlPath; @@ -119,8 +119,8 @@ struct HttpPluginServerImpl : public HttpPluginServer, TransportServer bool m_IsRequestLoggingEnabled = false; LoggerRef m_RequestLog; std::atomic_uint32_t m_ConnectionIdCounter{0}; - std::filesystem::path m_DataDir; // Application data directory - std::filesystem::path m_PayloadDir; // Request debugging payload directory + + HttpServerTracer m_RequestTracer; // TransportServer @@ -376,8 +376,8 @@ HttpPluginConnectionHandler::HandleRequest() ToString(Request.RequestContentType()), ToString(Request.AcceptContentType())); - m_Server->WriteDebugPayload(fmt::format("request_{}_{}.bin", m_ConnectionId, RequestNumber), - std::vector<IoBuffer>{Request.ReadPayload()}); + m_Server->m_RequestTracer.WriteDebugPayload(fmt::format("request_{}_{}.bin", m_ConnectionId, RequestNumber), + std::vector<IoBuffer>{Request.ReadPayload()}); } if (!HandlePackageOffers(*Service, Request, m_PackageHandler)) @@ -442,7 +442,8 @@ HttpPluginConnectionHandler::HandleRequest() if (m_Server->m_RequestLog.ShouldLog(logging::level::Trace)) { - m_Server->WriteDebugPayload(fmt::format("response_{}_{}.bin", m_ConnectionId, RequestNumber), ResponseBuffers); + m_Server->m_RequestTracer.WriteDebugPayload(fmt::format("response_{}_{}.bin", m_ConnectionId, RequestNumber), + ResponseBuffers); } for (const IoBuffer& Buffer : ResponseBuffers) @@ -678,10 +679,7 @@ HttpPluginServerImpl::CreateConnectionHandler(TransportConnection* Connection) int HttpPluginServerImpl::Initialize(int BasePort, std::filesystem::path DataDir) { - m_DataDir = DataDir; - m_PayloadDir = DataDir / "debug" / GetSessionIdString(); - - ZEN_INFO("any debug payloads will be written to '{}'", m_PayloadDir); + m_RequestTracer.Initialize(DataDir); try { @@ -848,23 +846,6 @@ HttpPluginServerImpl::RouteRequest(std::string_view Url) return CandidateService; } -void -HttpPluginServerImpl::WriteDebugPayload(std::string_view Filename, const std::span<const IoBuffer> Payload) -{ - uint64_t PayloadSize = 0; - std::vector<const IoBuffer*> Buffers; - for (auto& Io : Payload) - { - Buffers.push_back(&Io); - PayloadSize += Io.GetSize(); - } - - if (PayloadSize) - { - WriteFile(m_PayloadDir / Filename, Buffers.data(), Buffers.size()); - } -} - ////////////////////////////////////////////////////////////////////////// struct HttpPluginServerImpl; |