Skip to main content

Coordinator

Struct Coordinator 

Source
pub struct Coordinator {
    pub threads: Vec<BThread>,
    pub roles: Vec<Role>,
    pub partitions: Vec<PartitionDef>,
    pub active_locks: HashMap<String, ActiveLock>,
    pub event_log: Vec<TimestampedEvent>,
}
Expand description

The b-thread coordinator.

Fields§

§threads: Vec<BThread>§roles: Vec<Role>§partitions: Vec<PartitionDef>§active_locks: HashMap<String, ActiveLock>§event_log: Vec<TimestampedEvent>

Implementations§

Source§

impl Coordinator

Source

pub fn new() -> Coordinator

Create an empty coordinator.

Source

pub fn expire_locks(&mut self)

Expire any locks that have exceeded their TTL.

Source

pub fn evaluate(&self, event: &Event) -> Decision

Core evaluation: given a proposed event, check all b-threads.

Evaluation order (by b-thread priority, then rule type): BlockAlways -> Role check -> Partition -> Mutex -> Require -> BlockUntil -> RateLimit -> Timeout

Returns the first blocking/waiting decision found.

Source

pub fn evaluate_full(&self, event: &Event) -> Decision

Full evaluation including role checks.

Source

pub fn record(&mut self, event: &Event) -> Result<(), Error>

Record that an event occurred. Updates locks, appends to event log.

Source

pub fn release(&mut self, lock_key: &str, _agent: &str) -> Result<(), Error>

Release a specific mutex lock.

Source

pub fn release_all( &mut self, agent: &str, task_id: Option<&str>, ) -> Result<(), Error>

Release all locks held by an agent, optionally filtered by task.

Trait Implementations§

Source§

impl Default for Coordinator

Source§

fn default() -> Coordinator

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.