Skip to main content

CuSessionTracker

Struct CuSessionTracker 

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

Protocol-independent session rules shared by every bridge.

The bridge feeds it requests from Copper and events decoded from the controller. It owns no I/O and never allocates.

Implementations§

Source§

impl CuSessionTracker

Source

pub fn state(&self) -> &CuSessionState

Current state.

Source

pub fn take_changed(&mut self) -> bool

True once since the last call if the state changed.

Source

pub fn is_busy(&self) -> bool

True while a command is queued or awaiting its answer.

Source

pub fn request(&mut self, command: CuSessionCommand) -> CuSessionDecision

Handle one request from Copper.

Source

pub fn take_outgoing(&mut self) -> Option<CuSessionCommand>

The queued command, removed from the queue. Pass it to mark_sent once written.

Source

pub fn mark_sent(&mut self, command: CuSessionCommand, sequence: u32)

Record that command went out with protocol sequence sequence.

Source

pub fn on_acknowledged(&mut self, sequence: u32)

The controller accepted command sequence. Other sequences are ignored.

Source

pub fn on_rejected(&mut self, sequence: u32, detail: &str)

The controller refused command sequence with detail.

Source

pub fn on_control_report(&mut self, in_control: bool)

The controller reported whether this client is in control. On controllers that answer control requests this way instead of with an acknowledgement, it also completes a pending acquire or release.

Source

pub fn on_drive_report(&mut self, drives_ready: bool, motion_allowed: bool)

The controller reported drive readiness and whether it would accept motion.

Source

pub fn on_disconnected(&mut self)

The transport was lost: nothing is pending and nothing is held.

Source

pub fn shutdown_step(&self) -> Option<CuSessionCommand>

Next command to wind the session down, or None once this session holds nothing: disable drives this session enabled, then release control this session acquired. Queue it with request when the tracker is not busy.

Trait Implementations§

Source§

impl Clone for CuSessionTracker

Source§

fn clone(&self) -> CuSessionTracker

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 CuSessionTracker

Source§

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

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

impl Default for CuSessionTracker

Source§

fn default() -> CuSessionTracker

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> GetTypeRegistration for T

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> PayloadDefaultHandlePolicyApply for T
where T: ?Sized,

§

fn apply_handle_content_policy(&self, _mode: HandleContent)

§

impl<T> PayloadDefaultLoggingPolicy for T
where T: ?Sized,

§

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<T> Reflect for T
where T: 'static,

§

impl<T> ReflectTypePath for T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.