pub enum ChainWorkerRequest<Context>{
Show 16 variants
ReadCertificate {
height: BlockHeight,
callback: Sender<Result<Option<ConfirmedBlockCertificate>, WorkerError>>,
},
FindBundleInInbox {
inbox_id: Origin,
certificate_hash: CryptoHash,
height: BlockHeight,
index: u32,
callback: Sender<Result<Option<MessageBundle>, WorkerError>>,
},
GetChainStateView {
callback: Sender<Result<OwnedRwLockReadGuard<ChainStateView<Context>>, WorkerError>>,
},
QueryApplication {
query: Query,
callback: Sender<Result<QueryOutcome, WorkerError>>,
},
DescribeApplication {
application_id: UserApplicationId,
callback: Sender<Result<UserApplicationDescription, WorkerError>>,
},
StageBlockExecution {
block: ProposedBlock,
round: Option<u32>,
callback: Sender<Result<(ExecutedBlock, ChainInfoResponse), WorkerError>>,
},
ProcessTimeout {
certificate: TimeoutCertificate,
callback: Sender<Result<(ChainInfoResponse, NetworkActions), WorkerError>>,
},
HandleBlockProposal {
proposal: BlockProposal,
callback: Sender<Result<(ChainInfoResponse, NetworkActions), WorkerError>>,
},
ProcessValidatedBlock {
certificate: ValidatedBlockCertificate,
callback: Sender<Result<(ChainInfoResponse, NetworkActions, bool), WorkerError>>,
},
ProcessConfirmedBlock {
certificate: ConfirmedBlockCertificate,
notify_when_messages_are_delivered: Option<Sender<()>>,
callback: Sender<Result<(ChainInfoResponse, NetworkActions), WorkerError>>,
},
ProcessCrossChainUpdate {
origin: Origin,
bundles: Vec<(Epoch, MessageBundle)>,
callback: Sender<Result<Option<(BlockHeight, NetworkActions)>, WorkerError>>,
},
ConfirmUpdatedRecipient {
latest_heights: Vec<(Target, BlockHeight)>,
callback: Sender<Result<(), WorkerError>>,
},
HandleChainInfoQuery {
query: ChainInfoQuery,
callback: Sender<Result<(ChainInfoResponse, NetworkActions), WorkerError>>,
},
DownloadPendingBlob {
blob_id: BlobId,
callback: Sender<Result<Blob, WorkerError>>,
},
HandlePendingBlob {
blob: Blob,
callback: Sender<Result<ChainInfoResponse, WorkerError>>,
},
UpdateReceivedCertificateTrackers {
new_trackers: BTreeMap<ValidatorPublicKey, u64>,
callback: Sender<Result<(), WorkerError>>,
},
}
Expand description
A request for the ChainWorkerActor
.
Variants§
ReadCertificate
Reads the certificate for a requested BlockHeight
.
FindBundleInInbox
Search for a bundle in one of the chain’s inboxes.
Fields
certificate_hash: CryptoHash
height: BlockHeight
callback: Sender<Result<Option<MessageBundle>, WorkerError>>
GetChainStateView
Request a read-only view of the ChainStateView
.
Fields
callback: Sender<Result<OwnedRwLockReadGuard<ChainStateView<Context>>, WorkerError>>
QueryApplication
Query an application’s state.
DescribeApplication
Describe an application.
Fields
application_id: UserApplicationId
callback: Sender<Result<UserApplicationDescription, WorkerError>>
StageBlockExecution
Execute a block but discard any changes to the chain state.
Fields
block: ProposedBlock
callback: Sender<Result<(ExecutedBlock, ChainInfoResponse), WorkerError>>
ProcessTimeout
Process a leader timeout issued for this multi-owner chain.
Fields
certificate: TimeoutCertificate
callback: Sender<Result<(ChainInfoResponse, NetworkActions), WorkerError>>
HandleBlockProposal
Handle a proposal for the next block on this chain.
Fields
proposal: BlockProposal
callback: Sender<Result<(ChainInfoResponse, NetworkActions), WorkerError>>
ProcessValidatedBlock
Process a validated block issued for this multi-owner chain.
Fields
certificate: ValidatedBlockCertificate
callback: Sender<Result<(ChainInfoResponse, NetworkActions, bool), WorkerError>>
ProcessConfirmedBlock
Process a confirmed block (a commit).
Fields
certificate: ConfirmedBlockCertificate
callback: Sender<Result<(ChainInfoResponse, NetworkActions), WorkerError>>
ProcessCrossChainUpdate
Process a cross-chain update.
Fields
bundles: Vec<(Epoch, MessageBundle)>
callback: Sender<Result<Option<(BlockHeight, NetworkActions)>, WorkerError>>
ConfirmUpdatedRecipient
Handle cross-chain request to confirm that the recipient was updated.
HandleChainInfoQuery
Handle a ChainInfoQuery
.
Fields
query: ChainInfoQuery
callback: Sender<Result<(ChainInfoResponse, NetworkActions), WorkerError>>
DownloadPendingBlob
Get a blob if it belongs to the current locking block or pending proposal.
HandlePendingBlob
Handle a blob that belongs to a pending proposal or validated block certificate.
UpdateReceivedCertificateTrackers
Update the received certificate trackers to at least the given values.
Implementations§
source§impl<Context> ChainWorkerRequest<Context>
impl<Context> ChainWorkerRequest<Context>
sourcepub fn send_error(self, error: WorkerError)
pub fn send_error(self, error: WorkerError)
Responds to this request with an error
.
Trait Implementations§
Auto Trait Implementations§
impl<Context> Freeze for ChainWorkerRequest<Context>
impl<Context> !RefUnwindSafe for ChainWorkerRequest<Context>
impl<Context> Send for ChainWorkerRequest<Context>
impl<Context> Sync for ChainWorkerRequest<Context>
impl<Context> Unpin for ChainWorkerRequest<Context>
impl<Context> !UnwindSafe for ChainWorkerRequest<Context>
Blanket Implementations§
source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.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 moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
source§impl<T> MockResults for T
impl<T> MockResults for T
§type Results = T
type Results = T
MockInstance
.source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
source§fn read<'instance>(
&self,
instance: &'instance &mut I,
location: GuestPointer,
length: u32,
) -> Result<Cow<'instance, [u8]>, RuntimeError>
fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>
Reads length
bytes from memory from the provided location
.
source§fn write(
&mut self,
instance: &mut &mut I,
location: GuestPointer,
bytes: &[u8],
) -> Result<(), RuntimeError>
fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>
Writes the bytes
to memory at the provided location
.
source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.