pub struct Actor<E, M, S, V, T, B>where
E: Spawner + CryptoRng + Clock + Metrics,
M: Manager<PublicKey = S::PublicKey, Directory = <V::ApplicationBlock as ReshareBlock>::Directory>,
S: Scheme<V::Commitment>,
V: Variant,
V::ApplicationBlock: ReshareBlock,
<V::ApplicationBlock as ReshareBlock>::Signer: Signer<PublicKey = S::PublicKey>,
T: Strategy,
B: Blocker<PublicKey = S::PublicKey>,{ /* private fields */ }Expand description
DKG probe actor.
Implementations§
Source§impl<E, M, S, V, T, B> Actor<E, M, S, V, T, B>where
E: Spawner + CryptoRng + Clock + Metrics,
M: Manager<PublicKey = S::PublicKey, Directory = <V::ApplicationBlock as ReshareBlock>::Directory>,
S: Scheme<V::Commitment>,
V: Variant,
V::ApplicationBlock: ReshareBlock,
<V::ApplicationBlock as ReshareBlock>::Signer: Signer<PublicKey = S::PublicKey>,
T: Strategy,
B: Blocker<PublicKey = S::PublicKey>,
impl<E, M, S, V, T, B> Actor<E, M, S, V, T, B>where
E: Spawner + CryptoRng + Clock + Metrics,
M: Manager<PublicKey = S::PublicKey, Directory = <V::ApplicationBlock as ReshareBlock>::Directory>,
S: Scheme<V::Commitment>,
V: Variant,
V::ApplicationBlock: ReshareBlock,
<V::ApplicationBlock as ReshareBlock>::Signer: Signer<PublicKey = S::PublicKey>,
T: Strategy,
B: Blocker<PublicKey = S::PublicKey>,
Sourcepub fn new(config: Config<E, M, S, V, T, B>) -> (Self, Mailbox<S, V>)
pub fn new(config: Config<E, M, S, V, T, B>) -> (Self, Mailbox<S, V>)
Create a probe actor and mailbox.
Sourcepub fn start<BSE, BRE>(self, boundaries: (BSE, BRE)) -> Handle<()> ⓘ
pub fn start<BSE, BRE>(self, boundaries: (BSE, BRE)) -> Handle<()> ⓘ
Start the probe actor.
The boundary network is the probe request channel used to sample the configured committee’s latest finalizations, fetch the target epoch’s boundary finalization and block, and later serve the same requests to other joining peers.
Auto Trait Implementations§
impl<E, M, S, V, T, B> !RefUnwindSafe for Actor<E, M, S, V, T, B>
impl<E, M, S, V, T, B> !UnwindSafe for Actor<E, M, S, V, T, B>
impl<E, M, S, V, T, B> Freeze for Actor<E, M, S, V, T, B>where
<<V as Variant>::ApplicationBlock as ReshareBlock>::Signer: Sized,
<V as Variant>::ApplicationBlock: Sized,
Cell<E>: Freeze,
Receiver<Message<S, V>>: Freeze,
M: Freeze,
Bootstrap<<S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: Freeze,
S: Freeze,
EpochInfo<<<V as Variant>::ApplicationBlock as ReshareBlock>::Variant, <S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: Freeze,
T: Freeze,
B: Freeze,
<<V as Variant>::ApplicationBlock as Read>::Cfg: Freeze,
impl<E, M, S, V, T, B> Send for Actor<E, M, S, V, T, B>where
<<V as Variant>::ApplicationBlock as ReshareBlock>::Signer: Sized,
<V as Variant>::ApplicationBlock: Sized,
Cell<E>: Send,
Receiver<Message<S, V>>: Send,
Bootstrap<<S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: Send,
S: Send,
EpochInfo<<<V as Variant>::ApplicationBlock as ReshareBlock>::Variant, <S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: Send,
<<V as Variant>::ApplicationBlock as Read>::Cfg: Send,
impl<E, M, S, V, T, B> Sync for Actor<E, M, S, V, T, B>where
<<V as Variant>::ApplicationBlock as ReshareBlock>::Signer: Sized,
<V as Variant>::ApplicationBlock: Sized,
Cell<E>: Sync,
Receiver<Message<S, V>>: Sync,
M: Sync,
Bootstrap<<S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: Sync,
S: Sync,
EpochInfo<<<V as Variant>::ApplicationBlock as ReshareBlock>::Variant, <S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: Sync,
B: Sync,
<<V as Variant>::ApplicationBlock as Read>::Cfg: Sync,
impl<E, M, S, V, T, B> Unpin for Actor<E, M, S, V, T, B>where
<<V as Variant>::ApplicationBlock as ReshareBlock>::Signer: Sized,
<V as Variant>::ApplicationBlock: Sized,
Cell<E>: Unpin,
Receiver<Message<S, V>>: Unpin,
M: Unpin,
Bootstrap<<S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: Unpin,
S: Unpin,
EpochInfo<<<V as Variant>::ApplicationBlock as ReshareBlock>::Variant, <S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: Unpin,
T: Unpin,
B: Unpin,
<<V as Variant>::ApplicationBlock as Read>::Cfg: Unpin,
impl<E, M, S, V, T, B> UnsafeUnpin for Actor<E, M, S, V, T, B>where
<<V as Variant>::ApplicationBlock as ReshareBlock>::Signer: Sized,
<V as Variant>::ApplicationBlock: Sized,
Cell<E>: UnsafeUnpin,
Receiver<Message<S, V>>: UnsafeUnpin,
M: UnsafeUnpin,
Bootstrap<<S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: UnsafeUnpin,
S: UnsafeUnpin,
EpochInfo<<<V as Variant>::ApplicationBlock as ReshareBlock>::Variant, <S as Verifier>::PublicKey, <<V as Variant>::ApplicationBlock as ReshareBlock>::Directory>: UnsafeUnpin,
T: UnsafeUnpin,
B: UnsafeUnpin,
<<V as Variant>::ApplicationBlock as Read>::Cfg: UnsafeUnpin,
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> ⓘ
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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> ⓘ
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