use crate::error::MobError;
use crate::ids::{AgentIdentity, ProfileName};
use crate::roster::MemberState;
use crate::runtime::handle::{MobMemberListEntry, SpawnResult};
use std::collections::BTreeMap;
#[derive(Debug)]
pub enum EnsureMemberOutcome {
Spawned(SpawnResult),
Existed(Box<MobMemberListEntry>),
}
#[derive(Debug, Clone, Default)]
pub struct ReconcileOptions {
pub retire_stale: bool,
}
#[derive(Debug, Default)]
pub struct ReconcileReport {
pub desired: Vec<AgentIdentity>,
pub retained: Vec<AgentIdentity>,
pub spawned: Vec<SpawnResult>,
pub retired: Vec<AgentIdentity>,
pub failures: Vec<ReconcileFailure>,
}
#[derive(Debug)]
pub struct ReconcileFailure {
pub agent_identity: AgentIdentity,
pub error: MobError,
pub stage: ReconcileStage,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ReconcileStage {
Spawn,
Retire,
}
#[derive(Debug, Clone, Default)]
pub struct MemberFilter {
pub labels: BTreeMap<String, String>,
pub role: Option<ProfileName>,
pub state: Option<MemberState>,
}