pub struct Engine { /* private fields */ }Expand description
The main engine driving T-minus coordination.
Implementations§
Source§impl Engine
impl Engine
Sourcepub fn new(db_path: &Path) -> Result<Self, TMinusError>
pub fn new(db_path: &Path) -> Result<Self, TMinusError>
Create a new engine with SQLite storage at the given path.
Sourcepub fn in_memory() -> Result<Self, TMinusError>
pub fn in_memory() -> Result<Self, TMinusError>
Create an in-memory engine (for testing).
Sourcepub fn schedule_event(
&mut self,
kind: EventKind,
scheduled_at: DateTime<Utc>,
t_minus: Duration,
organizer: AgentId,
attendees: Vec<AgentId>,
quorum: usize,
payload: Value,
) -> Result<TMinusEvent, TMinusError>
pub fn schedule_event( &mut self, kind: EventKind, scheduled_at: DateTime<Utc>, t_minus: Duration, organizer: AgentId, attendees: Vec<AgentId>, quorum: usize, payload: Value, ) -> Result<TMinusEvent, TMinusError>
Schedule a new event.
Sourcepub fn confirm(
&mut self,
event_id: Uuid,
agent_id: &AgentId,
) -> Result<TMinusEvent, TMinusError>
pub fn confirm( &mut self, event_id: Uuid, agent_id: &AgentId, ) -> Result<TMinusEvent, TMinusError>
Confirm an agent’s attendance.
Sourcepub fn defer(
&mut self,
event_id: Uuid,
agent_id: &AgentId,
duration: Duration,
) -> Result<TMinusEvent, TMinusError>
pub fn defer( &mut self, event_id: Uuid, agent_id: &AgentId, duration: Duration, ) -> Result<TMinusEvent, TMinusError>
Defer an agent’s response with a requested delay.
Sourcepub fn mark_missed(
&mut self,
event_id: Uuid,
) -> Result<TMinusEvent, TMinusError>
pub fn mark_missed( &mut self, event_id: Uuid, ) -> Result<TMinusEvent, TMinusError>
Mark all pending attendees of an event as missed.
Sourcepub fn list_events(&self) -> Result<Vec<TMinusEvent>, TMinusError>
pub fn list_events(&self) -> Result<Vec<TMinusEvent>, TMinusError>
Get all events.
Sourcepub fn get_event(&self, id: Uuid) -> Result<Option<TMinusEvent>, TMinusError>
pub fn get_event(&self, id: Uuid) -> Result<Option<TMinusEvent>, TMinusError>
Get a specific event.
Sourcepub fn remove_event(&mut self, id: Uuid) -> Result<bool, TMinusError>
pub fn remove_event(&mut self, id: Uuid) -> Result<bool, TMinusError>
Remove a fired/missed event.
Sourcepub fn create_campaign(&mut self, name: String) -> Result<Campaign, TMinusError>
pub fn create_campaign(&mut self, name: String) -> Result<Campaign, TMinusError>
Create a new campaign.
Sourcepub fn campaign_add_event(
&mut self,
campaign_id: Uuid,
event_id: Uuid,
) -> Result<Campaign, TMinusError>
pub fn campaign_add_event( &mut self, campaign_id: Uuid, event_id: Uuid, ) -> Result<Campaign, TMinusError>
Add an event to a campaign.
Sourcepub fn campaign_link(
&mut self,
campaign_id: Uuid,
from: Uuid,
to: Uuid,
) -> Result<Campaign, TMinusError>
pub fn campaign_link( &mut self, campaign_id: Uuid, from: Uuid, to: Uuid, ) -> Result<Campaign, TMinusError>
Add a dependency edge between two events in a campaign.
Sourcepub fn campaign_execution_order(
&self,
campaign_id: Uuid,
) -> Result<Vec<Uuid>, TMinusError>
pub fn campaign_execution_order( &self, campaign_id: Uuid, ) -> Result<Vec<Uuid>, TMinusError>
Get campaign execution order (topological sort).
Sourcepub fn list_campaigns(&self) -> Result<Vec<Campaign>, TMinusError>
pub fn list_campaigns(&self) -> Result<Vec<Campaign>, TMinusError>
List all campaigns.
Sourcepub fn get_campaign(&self, id: Uuid) -> Result<Option<Campaign>, TMinusError>
pub fn get_campaign(&self, id: Uuid) -> Result<Option<Campaign>, TMinusError>
Get a specific campaign.
Sourcepub fn tick(&mut self, now: DateTime<Utc>) -> Result<TickResult, TMinusError>
pub fn tick(&mut self, now: DateTime<Utc>) -> Result<TickResult, TMinusError>
Process the current moment: fire events that reached quorum, mark missed, handle deferrals.
Sourcepub fn apply_deferral_cascade(
&mut self,
event_id: Uuid,
) -> Result<Option<TMinusEvent>, TMinusError>
pub fn apply_deferral_cascade( &mut self, event_id: Uuid, ) -> Result<Option<TMinusEvent>, TMinusError>
Process a deferral cascade: when an agent defers, push the event’s t_minus forward. Returns the updated event if the max deferral is applied.