Skip to main content

State

Enum State 

Source
pub enum State {
Show 13 variants Prepare(PrepareData), Stage(StageData), Fetch(FetchData), Commit(CommitData), WaitToReboot(WaitToRebootData), Reboot(RebootData), DeferReboot(DeferRebootData), Complete(CompleteData), FailPrepare(FailPrepareData), FailStage(FailStageData), FailFetch(FailFetchData), FailCommit(FailCommitData), Canceled(CanceledData),
}
Expand description

The set of states that a [Monitor] can receive during an update installation attempt.

An installation attempt ends when it enters a terminal state, denoted below as the states on the right-hand side of the diagram with no arrows leading out of them.

§State Machine Diagram

                      +----------------+     +----------------+
           +----------|    prepare     |---->|  fail_prepare  |
           |          +----------------+     +----------------+
           |                  |
           |                  v
           |          +----------------+     +----------------+
           +----------|     stage      |---->|   fail_stage   |
           |          +----------------+     +----------------+
           |                  |
           |                  v
           |          +----------------+     +----------------+
           +----------|     fetch      |---->|   fail_fetch   |
           |          +----------------+     +----------------+
           |                  |
           |                  v
           |          +----------------+     +----------------+
           +----------|     commit     |---->|   fail_commit  |
           |          +----------------+     +----------------+
           v                  |
   +----------------+         |              +----------------+
   |    canceled    |         +------------> |    complete    |
   +----------------+         |              +----------------+
                              v
                      +----------------+     +----------------+
                      | wait_to_reboot |---->|  defer_reboot  |
                      +----------------+     +----------------+
                              |
                              |              +----------------+
                              +------------->|     reboot     |
                                             +----------------+

Variants§

§

Prepare(PrepareData)

Fetching required metadata to begin the update and verifying system state.

Next States:

  • stage system is ready to install the update.
  • fail_prepare on error.
  • canceled on cancel.
§

Stage(StageData)

Fetching and writing kernel and firmware images.

Next States:

  • fetch required kernel and firmware images are written.
  • fail_stage on error.
  • canceled on cancel.
§

Fetch(FetchData)

Fetching packages.

Next States:

  • commit packages were fetched successfully.
  • fail_fetch on error.
  • canceled on cancel.
§

Commit(CommitData)

Prepare to switch over to the new system by writing the packages and switching the active partition.

Next States:

  • wait_to_reboot if a reboot is necessary to complete the update.
  • complete if no reboot is necessary to complete the update.
  • fail_commit on error.
  • canceled on cancel.
§

WaitToReboot(WaitToRebootData)

The system is configured to boot the updated OS on next boot, and the installer is waiting for the trigger to reboot the system.

Next States:

  • reboot when the installer decides it is time to initiate the reboot.
  • defer_reboot if the initiator specifically requests to not reboot.
§

Reboot(RebootData)

The installer has initiated a system reboot into the updated OS.

This is a terminal state

§

DeferReboot(DeferRebootData)

The initiator specifically requested to skip the reboot, but a reboot is still required to complete the update.

This is a terminal state

§

Complete(CompleteData)

The update is complete and no reboot was required.

This is a terminal state

§

FailPrepare(FailPrepareData)

An error occurred while preparing the install.

This is a terminal state

§

FailStage(FailStageData)

An error occurred while staging the images for the OS.

This is a terminal state

§

FailFetch(FailFetchData)

An error occurred while fetching the required artifacts.

This is a terminal state

§

FailCommit(FailCommitData)

An error occured while switching partitions.

This is a terminal state

§

Canceled(CanceledData)

The update is canceled.

This is a terminal state

Implementations§

Source§

impl State

Source

pub fn ordinal(&self) -> u64

Trait Implementations§

Source§

impl Clone for State

Source§

fn clone(&self) -> State

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for State

Source§

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

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

impl<D> Decode<State, D> for State
where D: ResourceDialect,

Source§

fn new_empty() -> State

Creates a valid instance of Self. The specific value does not matter, since it will be overwritten by decode.
Source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

Decodes an object of type T from the decoder’s buffers into self. Read more
Source§

impl<D> Encode<State, D> for &State
where D: ResourceDialect,

Source§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl PartialEq for State

Source§

fn eq(&self, other: &State) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Persistable for State

Source§

impl StructuralPartialEq for State

Source§

impl TypeMarker for State

Source§

type Owned = State

The owned Rust type which this FIDL type decodes into.
Source§

fn inline_align(_context: Context) -> usize

Returns the minimum required alignment of the inline portion of the encoded object. It must be a (nonzero) power of two.
Source§

fn inline_size(_context: Context) -> usize

Returns the size of the inline portion of the encoded object, including padding for alignment. Must be a multiple of inline_align.
Source§

fn encode_is_copy() -> bool

Returns true if the memory layout of Self::Owned matches the FIDL wire format and encoding requires no validation. When true, we can optimize encoding arrays and vectors of Self::Owned to a single memcpy. Read more
Source§

fn decode_is_copy() -> bool

Returns true if the memory layout of Self::Owned matches the FIDL wire format and decoding requires no validation. When true, we can optimize decoding arrays and vectors of Self::Owned to a single memcpy.
Source§

impl ValueTypeMarker for State

Source§

type Borrowed<'a> = &'a State

The Rust type to use for encoding. This is a particular Encode<Self> type cheaply obtainable from &Self::Owned. There are three cases: Read more
Source§

fn borrow( value: &<State as TypeMarker>::Owned, ) -> <State as ValueTypeMarker>::Borrowed<'_>

Cheaply converts from &Self::Owned to Self::Borrowed.

Auto Trait Implementations§

§

impl Freeze for State

§

impl RefUnwindSafe for State

§

impl Send for State

§

impl Sync for State

§

impl Unpin for State

§

impl UnsafeUnpin for State

§

impl UnwindSafe for State

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> Body for T
where T: Persistable,

Source§

type MarkerAtTopLevel = T

The marker type to use when the body is at the top-level.
Source§

type MarkerInResultUnion = T

The marker type to use when the body is nested in a result union.
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<E> ErrorType for E

Source§

type Marker = E

The marker type.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> InstanceFromServiceTransport<T> for T

§

fn from_service_transport(handle: T) -> T

Converts the given service transport handle of type T to [Self]
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.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<E> RunsTransport<Mpsc> for E

§

impl<E> RunsTransport<Mpsc> for E
where E: RunsTransport<Mpsc>,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
§

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

§

fn vzip(self) -> V