Struct massa_async_pool::AsyncPool
source · pub struct AsyncPool {
pub config: AsyncPoolConfig,
pub db: ShareableMassaDBController,
pub message_cache: BTreeMap<AsyncMessageId, AsyncMessage>,
message_id_serializer: AsyncMessageIdSerializer,
message_serializer: AsyncMessageSerializer,
message_id_deserializer: AsyncMessageIdDeserializer,
message_deserializer_db: AsyncMessageDeserializer,
}Expand description
Represents a pool of sorted messages in a deterministic way. The final asynchronous pool is attached to the output of the latest final slot within the context of massa-final-state. Nodes must bootstrap the final message pool when they join the network.
Fields§
§config: AsyncPoolConfigAsynchronous pool configuration
db: ShareableMassaDBController§message_cache: BTreeMap<AsyncMessageId, AsyncMessage>Cache of final async messages.
message_id_serializer: AsyncMessageIdSerializer§message_serializer: AsyncMessageSerializer§message_id_deserializer: AsyncMessageIdDeserializer§message_deserializer_db: AsyncMessageDeserializerImplementations§
source§impl AsyncPool
impl AsyncPool
sourcepub fn new(config: AsyncPoolConfig, db: ShareableMassaDBController) -> AsyncPool
pub fn new(config: AsyncPoolConfig, db: ShareableMassaDBController) -> AsyncPool
Creates an empty AsyncPool
sourcepub fn recompute_message_cache(&mut self)
pub fn recompute_message_cache(&mut self)
Recomputes the local message_cache after bootstrap or loading the state from disk
sourcepub fn apply_changes_to_batch(
&mut self,
changes: &AsyncPoolChanges,
batch: &mut DBBatch,
)
pub fn apply_changes_to_batch( &mut self, changes: &AsyncPoolChanges, batch: &mut DBBatch, )
Applies pre-compiled AsyncPoolChanges to the pool without checking for overflows.
This function is used when applying pre-compiled AsyncPoolChanges to an AsyncPool.
§arguments
changes:AsyncPoolChangeslisting all asynchronous pool changes (message insertions/deletions)
sourcefn load_message(&self, message_id: &AsyncMessageId) -> Option<AsyncMessage>
fn load_message(&self, message_id: &AsyncMessageId) -> Option<AsyncMessage>
Query a message from the database and deserialize it. This is heavy. Use the cached version whenever possible.
sourcepub fn fetch_messages(
&self,
message_ids: &[AsyncMessageId],
) -> Vec<(AsyncMessageId, Option<AsyncMessage>)>
pub fn fetch_messages( &self, message_ids: &[AsyncMessageId], ) -> Vec<(AsyncMessageId, Option<AsyncMessage>)>
Query a vec of messages from cache.
sourcepub fn is_key_value_valid(
&self,
serialized_key: &[u8],
serialized_value: &[u8],
) -> bool
pub fn is_key_value_valid( &self, serialized_key: &[u8], serialized_value: &[u8], ) -> bool
Deserializes the key and value, useful after bootstrap
source§impl AsyncPool
impl AsyncPool
sourcefn put_entry(
&self,
message_id: &AsyncMessageId,
message: AsyncMessage,
batch: &mut DBBatch,
)
fn put_entry( &self, message_id: &AsyncMessageId, message: AsyncMessage, batch: &mut DBBatch, )
Add every sub-entry individually for a given entry.
§Arguments
message_idmessagebatch: the given operation batch to update
sourcefn update_entry(
&self,
message_id: &AsyncMessageId,
message_update: AsyncMessageUpdate,
batch: &mut DBBatch,
)
fn update_entry( &self, message_id: &AsyncMessageId, message_update: AsyncMessageUpdate, batch: &mut DBBatch, )
Update the ledger entry of a given address.
§Arguments
entry_update: a descriptor of the entry updates to be appliedbatch: the given operation batch to update
sourcefn delete_entry(&self, message_id: &AsyncMessageId, batch: &mut DBBatch)
fn delete_entry(&self, message_id: &AsyncMessageId, batch: &mut DBBatch)
Delete every sub-entry associated to the given address.
§Arguments
- batch: the given operation batch to update
Trait Implementations§
Auto Trait Implementations§
impl Freeze for AsyncPool
impl !RefUnwindSafe for AsyncPool
impl Send for AsyncPool
impl Sync for AsyncPool
impl Unpin for AsyncPool
impl !UnwindSafe for AsyncPool
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§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.§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.§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.§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.§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.§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.§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.§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.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§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> 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§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§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 more§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 more§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
§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
§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.§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.§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.§impl<T> Tap for T
impl<T> Tap for T
§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 more§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 more§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 more§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 more§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 more§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 more§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.§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.§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.§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.§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.§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.§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.