pub enum State {
    Prepare(PrepareData),
    Stage(StageData),
    Fetch(FetchData),
    Commit(CommitData),
    WaitToReboot(WaitToRebootData),
    Reboot(RebootData),
    DeferReboot(DeferRebootData),
    Complete(CompleteData),
    FailPrepare(FailPrepareData),
    FailStage(FailStageData),
    FailFetch(FailFetchData),
    FailCommit(FailCommitData),
}
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  |
    +----------------+     +----------------+
            |
            |              +----------------+
            +------------> |    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.
§

Stage(StageData)

Fetching and writing kernel and firmware images.

Next States:

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

Fetch(FetchData)

Fetching packages.

Next States:

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

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.
§

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

Implementations§

source§

impl State

source

pub fn ordinal(&self) -> u64

source

pub fn is_unknown(&self) -> bool

👎Deprecated: Strict unions should not use is_unknown

Trait Implementations§

source§

impl Clone for State

source§

fn clone(&self) -> State

Returns a copy of the value. Read more
1.0.0 · 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

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

impl Decode<State> for State

source§

fn new_empty() -> Self

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<'_>, offset: usize, depth: Depth ) -> Result<()>

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

impl Encode<State> for &State

source§

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

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

impl PartialEq<State> for State

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl TypeMarker for State

§

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

§

type Borrowed<'a> = &'a <State as TypeMarker>::Owned

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<'a>(value: &'a <Self as TypeMarker>::Owned) -> Self::Borrowed<'a>

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

impl StructuralPartialEq for State

source§

impl TopLevel for State

Auto Trait Implementations§

§

impl RefUnwindSafe for State

§

impl Send for State

§

impl Sync for State

§

impl Unpin for State

§

impl UnwindSafe for State

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Encode<Ambiguous1> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _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> Encode<Ambiguous2> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _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> From<T> for T

const: unstable · 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 Twhere U: From<T>,

const: unstable · 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 = mem::align_of::<T>()

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
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · 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
source§

impl<T> Persistable for Twhere T: TopLevel + for<'a> ValueTypeMarker<Borrowed<'a> = &'a T>,