aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/sessions_cmd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/zen/cmds/sessions_cmd.h')
-rw-r--r--src/zen/cmds/sessions_cmd.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/zen/cmds/sessions_cmd.h b/src/zen/cmds/sessions_cmd.h
new file mode 100644
index 000000000..996054e84
--- /dev/null
+++ b/src/zen/cmds/sessions_cmd.h
@@ -0,0 +1,75 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "../zen.h"
+
+namespace zen {
+
+class SessionsSubCmdBase : public ZenSubCmdBase
+{
+public:
+ SessionsSubCmdBase(std::string_view Name, std::string_view Description);
+
+protected:
+ std::string m_HostName;
+};
+
+class SessionsLsSubCmd : public SessionsSubCmdBase
+{
+public:
+ SessionsLsSubCmd();
+ void Run(const ZenCliOptions& GlobalOptions) override;
+
+private:
+ std::string m_StatusFilter = "all"; // "active", "ended", "all"
+};
+
+class SessionsStatusSubCmd : public SessionsSubCmdBase
+{
+public:
+ SessionsStatusSubCmd();
+ void Run(const ZenCliOptions& GlobalOptions) override;
+};
+
+class SessionsTailSubCmd : public SessionsSubCmdBase
+{
+public:
+ SessionsTailSubCmd();
+ void Run(const ZenCliOptions& GlobalOptions) override;
+
+private:
+ std::string m_SessionId; // optional positional; empty = self
+ uint32_t m_Lines = 50;
+ bool m_Follow = false;
+ uint32_t m_PollIntervalMs = 500;
+};
+
+class SessionsUiSubCmd : public SessionsSubCmdBase
+{
+public:
+ SessionsUiSubCmd();
+ void Run(const ZenCliOptions& GlobalOptions) override;
+};
+
+class SessionsCommand : public ZenCmdWithSubCommands
+{
+public:
+ static constexpr char Name[] = "sessions";
+ static constexpr char Description[] = "Inspect zen client sessions - ls, status, tail, ui";
+
+ SessionsCommand();
+ ~SessionsCommand();
+
+ cxxopts::Options& Options() override { return m_Options; }
+
+private:
+ cxxopts::Options m_Options{Name, Description};
+
+ SessionsLsSubCmd m_LsSubCmd;
+ SessionsStatusSubCmd m_StatusSubCmd;
+ SessionsTailSubCmd m_TailSubCmd;
+ SessionsUiSubCmd m_UiSubCmd;
+};
+
+} // namespace zen