pub struct Mailbox<S: Scheme, B: Block> { /* private fields */ }Expand description
A mailbox for sending messages to the marshal Actor.
Implementations§
Source§impl<S: Scheme, B: Block> Mailbox<S, B>
impl<S: Scheme, B: Block> Mailbox<S, B>
Sourcepub async fn get_info(
&mut self,
identifier: impl Into<Identifier<B::Commitment>>,
) -> Option<(u64, B::Commitment)>
pub async fn get_info( &mut self, identifier: impl Into<Identifier<B::Commitment>>, ) -> Option<(u64, B::Commitment)>
A request to retrieve the information about the highest finalized block.
Sourcepub async fn get_block(
&mut self,
identifier: impl Into<Identifier<B::Commitment>>,
) -> Option<B>
pub async fn get_block( &mut self, identifier: impl Into<Identifier<B::Commitment>>, ) -> Option<B>
A best-effort attempt to retrieve a given block from local storage. It is not an indication to go fetch the block from the network.
Sourcepub async fn get_finalization(
&mut self,
height: u64,
) -> Option<Finalization<S, B::Commitment>>
pub async fn get_finalization( &mut self, height: u64, ) -> Option<Finalization<S, B::Commitment>>
A best-effort attempt to retrieve a given Finalization from local storage. It is not an indication to go fetch the Finalization from the network.
Sourcepub async fn hint_finalized(
&mut self,
height: u64,
targets: NonEmptyVec<S::PublicKey>,
)
pub async fn hint_finalized( &mut self, height: u64, targets: NonEmptyVec<S::PublicKey>, )
Hints that a finalized block may be available at the given height.
This method will request the finalization from the network via the resolver if it is not available locally.
Targets are required because this is typically called when a peer claims to be ahead. By targeting only those peers, we limit who we ask. If a target returns invalid data, they will be blocked by the resolver. If targets don’t respond or return “no data”, they effectively rate-limit themselves.
Calling this multiple times for the same height with different targets will add to the target set if there is an ongoing fetch, allowing more peers to be tried.
This is fire-and-forget: the finalization will be stored in marshal and delivered via the normal finalization flow when available.
Sourcepub async fn subscribe(
&mut self,
round: Option<Round>,
commitment: B::Commitment,
) -> Receiver<B>
pub async fn subscribe( &mut self, round: Option<Round>, commitment: B::Commitment, ) -> Receiver<B>
A request to retrieve a block by its commitment.
If the block is found available locally, the block will be returned immediately.
If the block is not available locally, the request will be registered and the caller will be notified when the block is available. If the block is not finalized, it’s possible that it may never become available.
The oneshot receiver should be dropped to cancel the subscription.
Sourcepub async fn ancestry(
&mut self,
__arg1: (Option<Round>, B::Commitment),
) -> Option<AncestorStream<S, B>>
pub async fn ancestry( &mut self, __arg1: (Option<Round>, B::Commitment), ) -> Option<AncestorStream<S, B>>
Returns an AncestorStream over the ancestry of a given block, leading up to genesis.
If the starting block is not found, None is returned.
Sourcepub async fn proposed(&mut self, round: Round, block: B)
pub async fn proposed(&mut self, round: Round, block: B)
Proposed requests that a proposed block is sent to all peers.
Sourcepub async fn verified(&mut self, round: Round, block: B)
pub async fn verified(&mut self, round: Round, block: B)
Notifies the actor that a block has been verified.
Sourcepub async fn set_floor(&mut self, height: u64)
pub async fn set_floor(&mut self, height: u64)
A request to set the sync floor (conditionally advances if higher).
The sync floor is the latest block that the application has processed. Marshal will not attempt to sync blocks below this height nor deliver blocks below this height to the application.
The default sync floor is height 0.
Trait Implementations§
Auto Trait Implementations§
impl<S, B> Freeze for Mailbox<S, B>
impl<S, B> !RefUnwindSafe for Mailbox<S, B>
impl<S, B> Send for Mailbox<S, B>
impl<S, B> Sync for Mailbox<S, B>
impl<S, B> Unpin for Mailbox<S, B>
impl<S, B> !UnwindSafe for Mailbox<S, B>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
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>
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