pub struct BufferedCertifierService { /* private fields */ }
Expand description
A decorator of CertifierService that can buffer registration of single signatures when the open message is not yet created.
When an open message is created, buffered single signatures for the open message type are registered.
Implementations§
source§impl BufferedCertifierService
impl BufferedCertifierService
sourcepub fn new(
certifier_service: Arc<dyn CertifierService>,
buffered_single_signature_store: Arc<dyn BufferedSingleSignatureStore>,
logger: Logger,
) -> Self
pub fn new( certifier_service: Arc<dyn CertifierService>, buffered_single_signature_store: Arc<dyn BufferedSingleSignatureStore>, logger: Logger, ) -> Self
Create a new instance of BufferedCertifierService
.
Trait Implementations§
source§impl CertifierService for BufferedCertifierService
impl CertifierService for BufferedCertifierService
source§fn inform_epoch<'life0, 'async_trait>(
&'life0 self,
epoch: Epoch,
) -> Pin<Box<dyn Future<Output = StdResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn inform_epoch<'life0, 'async_trait>(
&'life0 self,
epoch: Epoch,
) -> Pin<Box<dyn Future<Output = StdResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Inform the certifier I have detected a new epoch, it may clear its state
and prepare the new signature round. If the given Epoch is equal or less
than the previous informed Epoch, nothing is done.
source§fn register_single_signature<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
signature: &'life2 SingleSignatures,
) -> Pin<Box<dyn Future<Output = StdResult<SignatureRegistrationStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn register_single_signature<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
signature: &'life2 SingleSignatures,
) -> Pin<Box<dyn Future<Output = StdResult<SignatureRegistrationStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Add a new single signature for the open message at the given beacon. If
the open message does not exist or the open message has been certified
since then, an error is returned.
source§fn create_open_message<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
protocol_message: &'life2 ProtocolMessage,
) -> Pin<Box<dyn Future<Output = StdResult<OpenMessage>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn create_open_message<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
protocol_message: &'life2 ProtocolMessage,
) -> Pin<Box<dyn Future<Output = StdResult<OpenMessage>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Create an open message at the given beacon. If the open message does not
exist or exists at an older beacon, the older open messages are cleared
along with their associated single signatures and the new open message
is created. If the message already exists, an error is returned.
source§fn get_open_message<'life0, 'life1, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
) -> Pin<Box<dyn Future<Output = StdResult<Option<OpenMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_open_message<'life0, 'life1, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
) -> Pin<Box<dyn Future<Output = StdResult<Option<OpenMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Return the open message at the given Beacon. If the message does not
exist, None is returned.
source§fn mark_open_message_if_expired<'life0, 'life1, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
) -> Pin<Box<dyn Future<Output = StdResult<Option<OpenMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn mark_open_message_if_expired<'life0, 'life1, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
) -> Pin<Box<dyn Future<Output = StdResult<Option<OpenMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Mark the open message if it has expired.
source§fn create_certificate<'life0, 'life1, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
) -> Pin<Box<dyn Future<Output = StdResult<Option<Certificate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_certificate<'life0, 'life1, 'async_trait>(
&'life0 self,
signed_entity_type: &'life1 SignedEntityType,
) -> Pin<Box<dyn Future<Output = StdResult<Option<Certificate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a certificate if possible. If the pointed open message does
not exist or has been already certified, an error is raised. If a multi
signature is created then the flag
is_certified
of the open
message is set to true. The Certificate is created.
If the stake quorum of the single signatures is
not reached for the multisignature to be created, the certificate is not
created and None is returned. If the certificate can be created, the
list of the registered signers for the given epoch is used.source§fn get_certificate_by_hash<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 str,
) -> Pin<Box<dyn Future<Output = StdResult<Option<Certificate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_certificate_by_hash<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 str,
) -> Pin<Box<dyn Future<Output = StdResult<Option<Certificate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns a certificate from its hash.
source§fn get_latest_certificates<'life0, 'async_trait>(
&'life0 self,
last_n: usize,
) -> Pin<Box<dyn Future<Output = StdResult<Vec<Certificate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_latest_certificates<'life0, 'async_trait>(
&'life0 self,
last_n: usize,
) -> Pin<Box<dyn Future<Output = StdResult<Vec<Certificate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns the list of the latest created certificates.
source§fn verify_certificate_chain<'life0, 'async_trait>(
&'life0 self,
epoch: Epoch,
) -> Pin<Box<dyn Future<Output = StdResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn verify_certificate_chain<'life0, 'async_trait>(
&'life0 self,
epoch: Epoch,
) -> Pin<Box<dyn Future<Output = StdResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Verify the certificate chain and epoch gap. This will return an error if
there is at least an epoch between the given epoch and the most recent
certificate.
Auto Trait Implementations§
impl Freeze for BufferedCertifierService
impl !RefUnwindSafe for BufferedCertifierService
impl Send for BufferedCertifierService
impl Sync for BufferedCertifierService
impl Unpin for BufferedCertifierService
impl !UnwindSafe for BufferedCertifierService
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
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Casts the value.
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
§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 moresource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Performs the conversion.
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Performs the conversion.
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Casts the value.
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Casts the value.
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
Casts the value.
source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
Casts the value.
source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.