aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/sessions
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-04-23 18:16:57 +0200
committerStefan Boberg <[email protected]>2026-04-23 18:16:57 +0200
commit0232b991cd7d8e3a2114ea30e4591dd3e7b65c36 (patch)
tree94730e7594fd09ae1fa820391ce311f6daf13905 /src/zenserver/sessions
parentFix forward declaration order for s_GotSigWinch and SigWinchHandler (diff)
parenttrace: declare Region event name fields as AnsiString (#1012) (diff)
downloadarchived-zen-sb/zen-help.tar.xz
archived-zen-sb/zen-help.zip
Merge branch 'main' into sb/zen-helpsb/zen-help
- Combine HelpCommand (this branch) with HistoryCommand (main) in zen CLI dispatcher - Keep filter-aware TuiPickOne rewrite; adopt main's ASCII arrow glyphs in doc comment
Diffstat (limited to 'src/zenserver/sessions')
-rw-r--r--src/zenserver/sessions/httpsessions.cpp22
-rw-r--r--src/zenserver/sessions/httpsessions.h2
-rw-r--r--src/zenserver/sessions/inprocsessionlogsink.cpp2
-rw-r--r--src/zenserver/sessions/sessions.cpp2
-rw-r--r--src/zenserver/sessions/sessions.h13
5 files changed, 27 insertions, 14 deletions
diff --git a/src/zenserver/sessions/httpsessions.cpp b/src/zenserver/sessions/httpsessions.cpp
index fdf2e1f21..2276cb81a 100644
--- a/src/zenserver/sessions/httpsessions.cpp
+++ b/src/zenserver/sessions/httpsessions.cpp
@@ -377,7 +377,7 @@ HttpSessionsService::SessionLogRequest(HttpRouterRequest& Req)
if (ServerRequest.RequestContentType() == HttpContentType::kText)
{
- // Raw text — split by newlines, one entry per line
+ // Raw text - split by newlines, one entry per line
IoBuffer Payload = ServerRequest.ReadPayload();
std::string_view Text(reinterpret_cast<const char*>(Payload.GetData()), Payload.GetSize());
const DateTime Now = DateTime::Now();
@@ -417,13 +417,26 @@ HttpSessionsService::SessionLogRequest(HttpRouterRequest& Req)
const DateTime Now = DateTime::Now();
auto AppendFromObject = [&](CbObjectView Obj) {
- std::string Level(Obj["level"sv].AsString());
+ CbFieldView LevelField = Obj["level"sv];
+ std::string_view Level;
+ if (LevelField.IsString())
+ {
+ Level = LevelField.AsString();
+ }
+ else if (LevelField.IsInteger())
+ {
+ int32_t LevelInt = LevelField.AsInt32();
+ if (LevelInt >= 0 && LevelInt < logging::LogLevelCount)
+ {
+ Level = logging::ToString(static_cast<logging::LogLevel>(LevelInt));
+ }
+ }
std::string Message(Obj["message"sv].AsString());
CbObjectView DataView = Obj["data"sv].AsObjectView();
Session->AppendLog(SessionsService::LogEntry{
.Timestamp = Now,
- .Level = std::move(Level),
+ .Level = std::string(Level),
.Message = std::move(Message),
.Data = CbObject::Clone(DataView),
});
@@ -512,8 +525,9 @@ HttpSessionsService::SessionLogRequest(HttpRouterRequest& Req)
//
void
-HttpSessionsService::OnWebSocketOpen(Ref<WebSocketConnection> Connection)
+HttpSessionsService::OnWebSocketOpen(Ref<WebSocketConnection> Connection, std::string_view RelativeUri)
{
+ ZEN_UNUSED(RelativeUri);
ZEN_INFO("Sessions WebSocket client connected");
m_WsConnectionsLock.WithExclusiveLock([&] { m_WsConnections.push_back(std::move(Connection)); });
}
diff --git a/src/zenserver/sessions/httpsessions.h b/src/zenserver/sessions/httpsessions.h
index 86a23f835..6ebe61c8d 100644
--- a/src/zenserver/sessions/httpsessions.h
+++ b/src/zenserver/sessions/httpsessions.h
@@ -37,7 +37,7 @@ public:
void SetSelfSessionId(const Oid& Id) { m_SelfSessionId = Id; }
// IWebSocketHandler
- void OnWebSocketOpen(Ref<WebSocketConnection> Connection) override;
+ void OnWebSocketOpen(Ref<WebSocketConnection> Connection, std::string_view RelativeUri) override;
void OnWebSocketMessage(WebSocketConnection& Conn, const WebSocketMessage& Msg) override;
void OnWebSocketClose(WebSocketConnection& Conn, uint16_t Code, std::string_view Reason) override;
diff --git a/src/zenserver/sessions/inprocsessionlogsink.cpp b/src/zenserver/sessions/inprocsessionlogsink.cpp
index 9982859b6..04c5f7312 100644
--- a/src/zenserver/sessions/inprocsessionlogsink.cpp
+++ b/src/zenserver/sessions/inprocsessionlogsink.cpp
@@ -29,7 +29,7 @@ InProcSessionLogSink::Log(const logging::LogMessage& Msg)
SessionsService::LogEntry Entry{
.Timestamp = TimePointToDateTime(Msg.GetTime()),
- .Level = std::string(logging::ToStringView(Msg.GetLevel())),
+ .Level = std::string(logging::ToString(Msg.GetLevel())),
.Message = std::string(Msg.GetPayload()),
};
diff --git a/src/zenserver/sessions/sessions.cpp b/src/zenserver/sessions/sessions.cpp
index 1212ba5d8..9d4e3120c 100644
--- a/src/zenserver/sessions/sessions.cpp
+++ b/src/zenserver/sessions/sessions.cpp
@@ -129,7 +129,7 @@ SessionsService::~SessionsService() = default;
bool
SessionsService::RegisterSession(const Oid& SessionId, std::string AppName, std::string Mode, const Oid& JobId, CbObjectView Metadata)
{
- // Log outside the lock scope — InProcSessionLogSink calls back into
+ // Log outside the lock scope - InProcSessionLogSink calls back into
// GetSession() which acquires m_Lock shared, so logging while holding
// m_Lock exclusively would deadlock.
{
diff --git a/src/zenserver/sessions/sessions.h b/src/zenserver/sessions/sessions.h
index 8f07bfc31..a84ca6506 100644
--- a/src/zenserver/sessions/sessions.h
+++ b/src/zenserver/sessions/sessions.h
@@ -8,10 +8,9 @@
#include <zencore/uid.h>
ZEN_THIRD_PARTY_INCLUDES_START
+#include <EASTL/deque.h>
#include <tsl/robin_map.h>
ZEN_THIRD_PARTY_INCLUDES_END
-
-#include <deque>
#include <optional>
#include <string>
#include <vector>
@@ -83,11 +82,11 @@ public:
CursorResult GetLogEntriesAfter(uint64_t AfterCursor) const;
private:
- SessionInfo m_Info;
- Ref<SessionLog> m_Log;
- mutable RwLock m_LogLock;
- std::deque<LogEntry> m_LogEntries;
- uint64_t m_TotalAppended = 0; // monotonically increasing counter
+ SessionInfo m_Info;
+ Ref<SessionLog> m_Log;
+ mutable RwLock m_LogLock;
+ eastl::deque<LogEntry> m_LogEntries;
+ uint64_t m_TotalAppended = 0; // monotonically increasing counter
static constexpr uint32_t MaxLogEntries = 10000;
};