//! Value contracts for the single-worker actor prototype. use runa_core::ImplementationId; pub use runa_core::{ActorRef, Value}; #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub struct MailboxId(pub u64); pub type Message = Value; #[derive(Debug, Clone, PartialEq, Eq)] pub struct Envelope { pub sender: Option, pub message: Message, } /// Privileged worker commands; never representable as actor message data. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum SystemMessage { Stop, Kill, Restart, Pause, Resume, Reload(ImplementationId), Become(ImplementationId), } #[derive(Debug, Clone, PartialEq, Eq)] pub enum Status { Idle, Running, Awaiting, Paused, Stopped, Failed(String), } #[derive(Debug, Clone)] pub struct ActorSnapshot { pub actor_ref: ActorRef, pub mailbox: MailboxId, pub implementation: ImplementationId, pub incarnation: u64, pub state: Value, pub status: Status, pub execution: Option, pub queued: Vec, pub reserved: Option, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct ExecutionSnapshot { pub vm_steps: u64, pub instruction_pointer: usize, pub call_depth: usize, } #[derive(Debug, Clone)] pub enum Event { Spawned(ActorRef), Committed(ActorRef), Failed(ActorRef, String), Stopped(ActorRef), Restarted(ActorRef), Paused(ActorRef), Resumed(ActorRef), InvocationCancelled(ActorRef), BehaviorInstalled(ActorRef, ImplementationId), StateMigrated(ActorRef, Value, Value), }