Skip to main content

DeviceJoinClient

Struct DeviceJoinClient 

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

A joining device’s local half of the four-transfer admission exchange. The journal lives outside the incomplete store directory, so every method can be retried after process termination without losing its exact predecessor.

Implementations§

Source§

impl DeviceJoinClient

Source

pub async fn join_via_transport( &self, bundle: &DeviceJoinOfferBundle, timing: DeviceJoinTransportTiming, on_status: impl Fn(&str), cancel: &Receiver<bool>, ) -> Result<DeviceJoinTransportOutcome, BootstrapError>

Join through the transport: one call from the scanned offer bundle to a saved member Config, or to the owner’s abandonment of the attempt.

Every step resumes from the joiner journal, so calling this again after a crash picks up where the last durable step left off — a republished artifact that is already at its slot is accepted as the same transfer, and an awaited artifact is simply read again.

Source

pub async fn close_device_join_via_transport( &self, bundle: &DeviceJoinOfferBundle, timing: DeviceJoinTransportTiming, ) -> Result<(), BootstrapError>

Carry a cancelled attempt through the transport to its activated cleanup, then remove the attempt’s transport slots.

The joiner is the last reader in the unwind — it consumes the cleanup activation the owner publishes last — so the deletion belongs here, at the same point the joiner discards the rest of its pending join state.

Source§

impl DeviceJoinClient

Source

pub fn new( invite_code: &str, join_request_code: &str, layout: StoreLayout, synced_tables: Vec<SyncedTable>, migrations: Vec<Migration>, custom_s3_exact_slots: Option<CustomS3ExactSlots>, key_custody: KeyCustody, identity_custody: IdentityCustody, oauth_tokens: Option<OAuthTokens>, cloudkit_ops: Option<Arc<dyn CloudKitOps>>, clock: ClockRef, ) -> Result<Self, BootstrapError>

Source

pub async fn prepare_provider_access_request( &self, offer: DeviceJoinOffer, ) -> Result<DeviceProviderAccessRequest, BootstrapError>

Source

pub async fn accept_device_join_abandonment( &self, abandonment: DeviceJoinAbandonment, ) -> Result<DeviceJoinAbandonment, BootstrapError>

Source

pub fn device_join_status( &self, attempt_id: DeviceJoinAttemptId, ) -> Result<Option<DeviceJoinStatus>, BootstrapError>

Source

pub fn resume_device_joins( &self, ) -> Result<Vec<DeviceJoinAction>, BootstrapError>

Source

pub async fn close_pending_device_join( &self, cancellation: DeviceJoinCancellation, ) -> Result<JoinerJoinTerminal, BootstrapError>

Source

pub async fn complete_cancelled_device_join( &self, activation: DeviceJoinCleanupActivation, ) -> Result<(), BootstrapError>

Source

pub async fn prepare_registration_request( &self, approval: DeviceProviderAdmissionApproval, ) -> Result<DeviceRegistrationRequest, BootstrapError>

Source

pub async fn bootstrap_pending_device( &self, bootstrap: ProviderReadyDeviceBootstrap, on_status: impl Fn(&str), cancel: &Receiver<bool>, ) -> Result<DeviceJoinReadiness, BootstrapError>

Source

pub async fn complete_device_join( &self, activation: DeviceJoinActivation, on_status: impl Fn(&str), ) -> Result<Config, BootstrapError>

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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> 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<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
§

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

§

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
§

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

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,