flywheel/actor/mod.rs
1//! Actor Model: Message-passing concurrency for the TUI engine.
2//!
3//! This module implements a simple actor system using crossbeam channels:
4//! - **Input Actor**: Polls terminal events, forwards to main loop
5//! - **Render Actor**: Receives render commands, diffs and flushes
6//! - **Ticker Actor**: Generates regular timing events for frame pacing
7//! - **Main Loop**: Coordinates between actors, handles application logic
8//!
9//! # Architecture
10//!
11//! ```text
12//! ┌──────────────┐ InputEvent ┌──────────────┐
13//! │ Input Thread │ ─────────────────▶ │ │
14//! └──────────────┘ │ Main Loop │
15//! │ │
16//! ┌──────────────┐ RenderCommand │ │
17//! │Render Thread │ ◀───────────────── │ │
18//! └──────────────┘ └──────────────┘
19//! ▲ │
20//! ┌──────────────┐ Tick │
21//! │Ticker Thread │ ─────────────────▶ │
22//! └──────────────┘ │
23//! │ AgentEvent
24//! ▼
25//! ┌──────────────┐
26//! │ Agent/Network│
27//! └──────────────┘
28//! ```
29
30mod messages;
31mod input;
32mod renderer;
33mod engine;
34mod ticker;
35
36pub use messages::{InputEvent, RenderCommand, AgentEvent, KeyCode, KeyModifiers, MouseButton, MouseEvent};
37pub use input::InputActor;
38pub use renderer::RendererActor;
39pub use engine::{Engine, EngineConfig};
40pub use ticker::{TickerActor, Tick};