ScenarioStateMachineManager

Struct ScenarioStateMachineManager 

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

Manager for scenario state machines

Handles loading state machines from scenario manifests, validating them, executing state transitions, and managing active state instances.

Implementations§

Source§

impl ScenarioStateMachineManager

Source

pub fn new() -> Self

Create a new state machine manager

Source

pub async fn load_from_manifest( &self, manifest: &ScenarioManifest, ) -> Result<()>

Load state machines from a scenario manifest

Validates and loads all state machines defined in the manifest, along with their visual layouts.

Source

pub fn validate_state_machine(&self, state_machine: &StateMachine) -> Result<()>

Validate a state machine

Checks that:

  • Initial state exists in states list
  • All transitions reference valid states
  • Sub-scenario references are valid
  • No circular dependencies in sub-scenarios
Source

pub async fn get_state_machine( &self, resource_type: &str, ) -> Option<StateMachine>

Get a state machine by resource type

Source

pub async fn get_visual_layout( &self, resource_type: &str, ) -> Option<VisualLayout>

Get visual layout for a state machine

Source

pub async fn create_instance( &self, resource_id: impl Into<String>, resource_type: impl Into<String>, ) -> Result<()>

Create a new state instance for a resource

Initializes a new state instance with the initial state from the state machine.

Source

pub async fn get_current_state(&self, resource_id: &str) -> Option<String>

Get current state of a resource instance

Source

pub async fn execute_transition( &self, resource_id: &str, to_state: impl Into<String>, context: Option<HashMap<String, Value>>, ) -> Result<()>

Execute a state transition

Attempts to transition a resource instance from its current state to a new state. Validates the transition is allowed and evaluates any conditions.

Source

pub async fn list_instances(&self) -> Vec<StateInstance>

Get all state instances

Source

pub async fn get_instance(&self, resource_id: &str) -> Option<StateInstance>

Get state instance by resource ID

Source

pub async fn delete_instance(&self, resource_id: &str) -> bool

Delete a state instance

Source

pub async fn get_next_states(&self, resource_id: &str) -> Result<Vec<String>>

Get next possible states for a resource

Returns all states that can be reached from the current state of the resource.

Source

pub async fn set_visual_layout(&self, resource_type: &str, layout: VisualLayout)

Set visual layout for a state machine

Source

pub async fn clear(&self)

Clear all state machines and instances

Source

pub async fn delete_state_machine(&self, resource_type: &str) -> bool

Delete a state machine by resource type

Removes the state machine and its visual layout. Also removes all instances associated with this resource type.

Source

pub async fn list_state_machines(&self) -> Vec<(String, StateMachine)>

List all state machines

Returns a list of all loaded state machines with their resource types.

Source

pub async fn export_all( &self, ) -> (Vec<StateMachine>, HashMap<String, VisualLayout>)

Get all state machines and visual layouts for export

Returns all state machines and their associated visual layouts in a format suitable for export.

Trait Implementations§

Source§

impl Default for ScenarioStateMachineManager

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

Source§

fn fake<U>(&self) -> U
where Self: FakeBase<U>,

Source§

fn fake_with_rng<U, R>(&self, rng: &mut R) -> U
where R: Rng + ?Sized, Self: FakeBase<U>,

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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
Source§

impl<T> ParallelSend for T