Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
i_tui_controller.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <cstddef>
7#include <cstdint>
8#include <functional>
9#include <memory>
10
11#include "contur/core/error.h"
12
16
17namespace contur {
18
20 enum class TuiControllerState : std::uint8_t
21 {
25 };
26
29 {
30 public:
32 virtual ~ITuiController() = default;
33
37 [[nodiscard]] virtual Result<void> dispatch(const TuiCommand &command) = 0;
38
42 [[nodiscard]] virtual Result<void> advanceAutoplay(std::uint32_t elapsedMs) = 0;
43
45 [[nodiscard]] virtual const TuiSnapshot &current() const noexcept = 0;
46
48 [[nodiscard]] virtual TuiControllerState state() const noexcept = 0;
49
51 [[nodiscard]] virtual std::size_t historySize() const noexcept = 0;
52
54 [[nodiscard]] virtual std::size_t historyCursor() const noexcept = 0;
55 };
56
58 class TuiController final : public ITuiController
59 {
60 public:
62 using TickFn = std::function<Result<void>(std::size_t step)>;
63
68 TuiController(const IKernelReadModel &readModel, TickFn tickFn, std::size_t historyCapacity = 256);
69
71 ~TuiController() override;
72
74 TuiController(const TuiController &) = delete;
75
78
81
83 TuiController &operator=(TuiController &&) noexcept;
84
86 [[nodiscard]] Result<void> dispatch(const TuiCommand &command) override;
87
89 [[nodiscard]] Result<void> advanceAutoplay(std::uint32_t elapsedMs) override;
90
92 [[nodiscard]] const TuiSnapshot &current() const noexcept override;
93
95 [[nodiscard]] TuiControllerState state() const noexcept override;
96
98 [[nodiscard]] std::size_t historySize() const noexcept override;
99
101 [[nodiscard]] std::size_t historyCursor() const noexcept override;
102
103 private:
104 struct Impl;
105 std::unique_ptr<Impl> impl_;
106 };
107
108} // namespace contur
Read-only adapter contract for capturing UI-facing kernel snapshots.
TUI controller interface for command/state orchestration.
virtual Result< void > advanceAutoplay(std::uint32_t elapsedMs)=0
Advances autoplay timer and executes due tick steps.
virtual Result< void > dispatch(const TuiCommand &command)=0
Dispatches one controller command.
virtual std::size_t historySize() const noexcept=0
Returns retained history entry count.
virtual ~ITuiController()=default
Virtual destructor for interface-safe polymorphic cleanup.
virtual const TuiSnapshot & current() const noexcept=0
Returns current UI snapshot at history cursor.
virtual TuiControllerState state() const noexcept=0
Returns current playback state.
virtual std::size_t historyCursor() const noexcept=0
Returns current history cursor index.
A result type that holds either a success value of type T or an ErrorCode.
Definition error.h:104
TuiControllerState state() const noexcept override
Returns current playback state.
TuiController(const TuiController &)=delete
Copy construction is disabled.
TuiController(TuiController &&) noexcept
Move-constructs controller state.
std::unique_ptr< Impl > impl_
TuiController & operator=(const TuiController &)=delete
Copy assignment is disabled.
TuiController(const IKernelReadModel &readModel, TickFn tickFn, std::size_t historyCapacity=256)
Constructs controller.
std::size_t historySize() const noexcept override
Returns retained history entry count.
std::size_t historyCursor() const noexcept override
Returns current history cursor index.
Result< void > dispatch(const TuiCommand &command) override
Dispatches one controller command.
std::function< Result< void >(std::size_t step)> TickFn
Signature used by controller to advance kernel time.
~TuiController() override
Destroys controller.
Result< void > advanceAutoplay(std::uint32_t elapsedMs) override
Advances autoplay timer and executes due tick steps.
const TuiSnapshot & current() const noexcept override
Returns current UI snapshot at history cursor.
Error codes and Result<T> type for fallible operations.
Read-model adapter interface that maps kernel state to TUI snapshots.
Definition block.h:15
@ Idle
Lowest — runs only when nothing else is ready.
Definition priority.h:27
TuiControllerState
Controller state for playback lifecycle.
Generic command payload accepted by TUI controller.
Top-level immutable model snapshot consumed by TUI controller/views.
Definition tui_models.h:93
Command contracts and validation helpers for TUI controller behavior.
Immutable DTO contracts for the external TUI MVC model layer.