state_unit

Struct StateUnits

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

A set of state units.

Implementations§

Source§

impl StateUnits

Source

pub fn new() -> Self

Creates a new instance with no initial units.

Source

pub fn inspector(&self) -> StateUnitsInspector

Returns an inspector that can be used to inspect the state units while state transitions are in process.

Source

pub fn add(&self, name: impl Into<Arc<str>>) -> UnitBuilder<'_>

Save and restore will use name as the save ID, so this forms part of the saved state.

Note that the added unit will not be running after it is built/spawned, even if the other units are running. Call StateUnits::start_stopped_units when finished adding units.

Source

pub fn is_running(&self) -> bool

Check if state units are currently running.

Source

pub async fn start_stopped_units(&mut self)

Starts any units that are individually stopped (either because of a call to StateUnits::stop_subset or because they were added via StateUnits::add while the VM was running.

Does nothing if all units are stopped, via StateUnits::stop.

Source

pub async fn start(&mut self)

Starts all the state units.

Source

pub async fn stop(&mut self)

Stops all the state units.

Source

pub async fn stop_subset( &mut self, units: impl IntoIterator<Item = &UnitHandle>, )

Stops just the units in units.

This can be useful, for example, if you need to temporarily stop the virtual processors for a short time without stopping the VM devices (which might itself take too long).

Units within this set will be stopped in reverse dependency order, but other units that have dependencies on the units being stopped will continue running.

Source

pub async fn force_reset( &mut self, units: impl IntoIterator<Item = &UnitHandle>, ) -> Result<(), StateTransitionError>

Resets just the units in units. The units must be stopped, either via a call to StateUnits::stop or StateUnits::stop_subset.

Units within this set will be reset in dependency order, but other units that have dependencies on the units being reset will not be reset. This may cause inconsistencies in VM state depending on the details of the state units being reset, so this must be used with knowledge of the state units.

Panics if the specified units are not stopped.

Source

pub async fn reset(&mut self) -> Result<(), StateTransitionError>

Resets all the state units.

Panics if running.

Source

pub async fn save( &mut self, ) -> Result<Vec<SavedStateUnit>, StateTransitionError>

Saves all the state units.

Panics if running.

Source

pub async fn restore( &mut self, states: Vec<SavedStateUnit>, ) -> Result<(), StateTransitionError>

Restores all the state units.

Panics if running.

Trait Implementations§

Source§

impl Debug for StateUnits

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Inspect for StateUnits

Source§

fn inspect(&self, req: Request<'_>)

Inspects the object.

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, 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<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