diff options
Diffstat (limited to 'src/zen/cmds/sessions_cmd.h')
| -rw-r--r-- | src/zen/cmds/sessions_cmd.h | 75 |
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 |