Skip to main content

TroopManager

Struct TroopManager 

Source
pub struct TroopManager { /* private fields */ }
Expand description

Manages all active troops in the system.

Implementations§

Source§

impl TroopManager

Source

pub fn new() -> Self

Create a new troop manager with a message router.

Source

pub fn with_router(router: Arc<MessageRouter>) -> Self

Create a new troop manager with a shared message router.

Source

pub fn router(&self) -> &Arc<MessageRouter>

Get a reference to the underlying message router.

Source

pub fn register_capabilities( &self, fighter_id: FighterId, capabilities: Vec<String>, )

Register capabilities for a fighter (used by Specialist strategy).

Source

pub fn form_troop( &self, name: String, leader: FighterId, members: Vec<FighterId>, strategy: CoordinationStrategy, ) -> TroopId

Form a new troop with a leader and initial members.

The leader is automatically included in the members list.

Source

pub fn recruit( &self, troop_id: &TroopId, fighter_id: FighterId, ) -> PunchResult<()>

Add a fighter to an existing troop.

Source

pub fn dismiss( &self, troop_id: &TroopId, fighter_id: &FighterId, ) -> PunchResult<()>

Remove a fighter from a troop.

If the dismissed fighter is the leader, the first remaining member becomes the new leader. Returns an error if this would leave the troop empty.

Source

pub fn disband_troop(&self, troop_id: &TroopId) -> PunchResult<String>

Dissolve a troop entirely.

Source

pub fn get_troop(&self, troop_id: &TroopId) -> Option<Troop>

Get a snapshot of a troop.

Source

pub fn list_troops(&self) -> Vec<Troop>

List all troops.

Source

pub fn assign_task( &self, troop_id: &TroopId, task_description: &str, ) -> PunchResult<Vec<FighterId>>

Assign a task to a troop, returning the fighter(s) that should handle it based on the troop’s coordination strategy.

This method uses the MessageRouter to actually dispatch tasks to fighters and collects results according to the strategy.

Source

pub async fn assign_task_async( &self, troop_id: &TroopId, task_description: &str, ) -> PunchResult<TaskAssignmentResult>

Assign a task using the full async strategy dispatch, returning a TaskAssignmentResult with routing details and collected results.

Source

pub async fn execute_pipeline( &self, troop: &Troop, initial_input: &str, ) -> PunchResult<TaskAssignmentResult>

Pipeline: Execute the full pipeline, passing each stage’s output to the next.

Source

pub fn tally_votes(&self, votes: &[(FighterId, String)]) -> Option<String>

Tally votes and determine the majority result.

Source

pub fn is_in_troop(&self, fighter_id: &FighterId) -> bool

Check if a fighter is a member of any troop.

Source

pub fn get_fighter_troops(&self, fighter_id: &FighterId) -> Vec<TroopId>

Get all troops a fighter belongs to.

Source

pub fn pause_troop(&self, troop_id: &TroopId) -> PunchResult<()>

Pause a troop.

Source

pub fn resume_troop(&self, troop_id: &TroopId) -> PunchResult<()>

Resume a paused troop.

Trait Implementations§

Source§

impl Default for TroopManager

Source§

fn default() -> Self

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more