aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/servers/httpsys.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenhttp/servers/httpsys.cpp')
-rw-r--r--src/zenhttp/servers/httpsys.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/zenhttp/servers/httpsys.cpp b/src/zenhttp/servers/httpsys.cpp
index ac17d3ba0..54308a00b 100644
--- a/src/zenhttp/servers/httpsys.cpp
+++ b/src/zenhttp/servers/httpsys.cpp
@@ -9,6 +9,7 @@
#include <zencore/filesystem.h>
#include <zencore/fmtutils.h>
#include <zencore/logging.h>
+#include <zencore/memory/llm.h>
#include <zencore/scopeguard.h>
#include <zencore/string.h>
#include <zencore/timer.h>
@@ -25,6 +26,14 @@
namespace zen {
+const FLLMTag&
+GetHttpsysTag()
+{
+ static FLLMTag HttpsysTag("httpsys");
+
+ return HttpsysTag;
+}
+
/**
* @brief Windows implementation of HTTP server based on http.sys
*
@@ -836,6 +845,8 @@ HttpAsyncWorkRequest::HandleCompletion(ULONG IoResult, ULONG_PTR NumberOfBytesTr
void
HttpAsyncWorkRequest::AsyncWorkItem::Execute()
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
ZEN_TRACE_CPU("httpsys::async_execute");
try
@@ -901,6 +912,8 @@ HttpSysServer::HttpSysServer(const HttpSysConfig& InConfig)
, m_IsAsyncResponseEnabled(InConfig.IsAsyncResponseEnabled)
, m_InitialConfig(InConfig)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
// Initialize thread pool
int MinThreadCount;
@@ -976,6 +989,8 @@ HttpSysServer::Close()
int
HttpSysServer::InitializeServer(int BasePort)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
using namespace std::literals;
WideStringBuilder<64> WildcardUrlPath;
@@ -1220,6 +1235,8 @@ HttpSysServer::Cleanup()
WorkerThreadPool&
HttpSysServer::WorkPool()
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
if (!m_AsyncWorkPool)
{
RwLock::ExclusiveLockScope _(m_AsyncWorkPoolInitLock);
@@ -1304,6 +1321,8 @@ HttpSysServer::IssueNewRequestMaybe()
return;
}
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
std::unique_ptr<HttpSysTransaction> Request = std::make_unique<HttpSysTransaction>(*this);
std::error_code ErrorCode;
@@ -1327,6 +1346,8 @@ HttpSysServer::IssueNewRequestMaybe()
void
HttpSysServer::RegisterService(const char* UrlPath, HttpService& Service)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
if (UrlPath[0] == '/')
{
++UrlPath;
@@ -1707,6 +1728,8 @@ HttpSysServerRequest::ReadPayload()
void
HttpSysServerRequest::WriteResponse(HttpResponseCode ResponseCode)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
ZEN_ASSERT(IsHandled() == false);
auto Response = new HttpMessageResponseRequest(m_HttpTx, (uint16_t)ResponseCode);
@@ -1724,6 +1747,8 @@ HttpSysServerRequest::WriteResponse(HttpResponseCode ResponseCode)
void
HttpSysServerRequest::WriteResponse(HttpResponseCode ResponseCode, HttpContentType ContentType, std::span<IoBuffer> Blobs)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
ZEN_ASSERT(IsHandled() == false);
auto Response = new HttpMessageResponseRequest(m_HttpTx, (uint16_t)ResponseCode, ContentType, Blobs);
@@ -1741,6 +1766,8 @@ HttpSysServerRequest::WriteResponse(HttpResponseCode ResponseCode, HttpContentTy
void
HttpSysServerRequest::WriteResponse(HttpResponseCode ResponseCode, HttpContentType ContentType, std::u8string_view ResponseString)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
ZEN_ASSERT(IsHandled() == false);
auto Response =
@@ -1759,6 +1786,8 @@ HttpSysServerRequest::WriteResponse(HttpResponseCode ResponseCode, HttpContentTy
void
HttpSysServerRequest::WriteResponseAsync(std::function<void(HttpServerRequest&)>&& ContinuationHandler)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
if (m_HttpTx.Server().IsAsyncResponseEnabled())
{
m_NextCompletionHandler = new HttpAsyncWorkRequest(m_HttpTx, std::move(ContinuationHandler));
@@ -1856,6 +1885,8 @@ InitialRequestHandler::IssueRequest(std::error_code& ErrorCode)
HttpSysRequestHandler*
InitialRequestHandler::HandleCompletion(ULONG IoResult, ULONG_PTR NumberOfBytesTransferred)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
auto _ = MakeGuard([&] { m_IsInitialRequest = false; });
switch (IoResult)
@@ -2066,6 +2097,8 @@ HttpSysServer::RegisterService(HttpService& Service)
Ref<HttpServer>
CreateHttpSysServer(HttpSysConfig Config)
{
+ ZEN_MEMSCOPE(GetHttpsysTag());
+
return Ref<HttpServer>(new HttpSysServer(Config));
}