Skip to main content

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};