pub struct Leader<L: SharedUnlockDriver>(Arc<InnerLeader<L>>);Expand description
Coordinates shared unlock state as the authoritative endpoint for followers.
Tuple Fields§
§0: Arc<InnerLeader<L>>Implementations§
Source§impl<D: SharedUnlockDriver + Send + Sync + 'static> Leader<D>
impl<D: SharedUnlockDriver + Send + Sync + 'static> Leader<D>
Sourcepub fn create(lock_system: D, ipc_client: Arc<dyn IpcClient>) -> Self
pub fn create(lock_system: D, ipc_client: Arc<dyn IpcClient>) -> Self
Creates a leader instance for the shared unlock protocol.
Sourcepub async fn start(
&self,
cancellation_token: Option<CancellationToken>,
) -> Result<(), LeaderStartError>
pub async fn start( &self, cancellation_token: Option<CancellationToken>, ) -> Result<(), LeaderStartError>
Starts background processing for incoming follower messages.
async fn broadcast_to_active_followers(&self, message: LeaderMessage)
Sourcepub async fn receive_message(
&self,
incoming_message: TypedIncomingMessage<FollowerMessage>,
) -> Result<(), ()>
pub async fn receive_message( &self, incoming_message: TypedIncomingMessage<FollowerMessage>, ) -> Result<(), ()>
Handles a message sent by a follower.
This updates follower session liveness, validates web message origins against the follower user’s vault URL, and applies lock state changes when needed.
Sourcepub async fn handle_device_event(&self, event: DeviceEvent) -> Result<(), ()>
pub async fn handle_device_event(&self, event: DeviceEvent) -> Result<(), ()>
Handles local device events and propagates authoritative updates to followers.
Lock and unlock events are broadcast to active followers. Timer events prune stale follower sessions that have not sent recent heartbeats.
async fn send_message(&self, message: LeaderMessage, recipient: Endpoint)
Trait Implementations§
Auto Trait Implementations§
impl<L> Freeze for Leader<L>
impl<L> !RefUnwindSafe for Leader<L>
impl<L> Send for Leader<L>
impl<L> Sync for Leader<L>
impl<L> Unpin for Leader<L>
impl<L> UnsafeUnpin for Leader<L>
impl<L> !UnwindSafe for Leader<L>
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
Create a new handle for an Arc value Read more
§unsafe fn clone_handle(handle: Handle) -> Handle
unsafe fn clone_handle(handle: Handle) -> Handle
Clone a handle Read more
§unsafe fn consume_handle(handle: Handle) -> Arc<T>
unsafe fn consume_handle(handle: Handle) -> Arc<T>
Consume a handle, getting back the initial
Arc<> Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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