kona_derive::stages

Struct BatchQueue

Source
pub struct BatchQueue<P, BF>{ /* private fields */ }
Expand description

BatchQueue is responsible for o rdering unordered batches and gnerating empty batches when the sequence window has passed.

It receives batches that are tagged with the L1 Inclusion block of the batch. It only considers batches that are inside the sequencing window of a specific L1 Origin. It tries to eagerly pull batches based on the current L2 safe head. Otherwise it filters/creates an entire epoch’s worth of batches at once.

This stage tracks a range of L1 blocks with the assumption that all batches with an L1 inclusion block inside that range have been added to the stage by the time that it attempts to advance a full epoch.

It is internally responsible for making sure that batches with L1 inclusions block outside it’s working range are not considered or pruned.

Implementations§

Source§

impl<P, BF> BatchQueue<P, BF>

Source

pub fn new(cfg: Arc<RollupConfig>, prev: P, fetcher: BF) -> Self

Creates a new BatchQueue stage.

Source

pub fn pop_next_batch(&mut self, parent: L2BlockInfo) -> Option<SingleBatch>

Pops the next batch from the current queued up span-batch cache. The parent is used to set the parent hash of the batch. The parent is verified when the batch is later validated.

Source

pub async fn derive_next_batch( &mut self, empty: bool, parent: L2BlockInfo, ) -> PipelineResult<Batch>

Derives the next batch to apply on top of the current L2 safe head. Follows the validity rules imposed on consecutive batches. Based on currently available buffered batch and L1 origin information. A PipelineError::Eof is returned if no batch can be derived yet.

Source

pub async fn add_batch( &mut self, batch: Batch, parent: L2BlockInfo, ) -> PipelineResult<()>

Adds a batch to the queue.

Trait Implementations§

Source§

impl<P, BF> AttributesProvider for BatchQueue<P, BF>

Source§

fn next_batch<'life0, 'async_trait>( &'life0 mut self, parent: L2BlockInfo, ) -> Pin<Box<dyn Future<Output = PipelineResult<SingleBatch>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns the next valid batch upon the given safe head. Also returns the boolean that indicates if the batch is the last block in the batch.

Source§

fn is_last_in_span(&self) -> bool

Returns if the previous batch was the last in the span.

Source§

impl<P, BF> Debug for BatchQueue<P, BF>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<P, BF> OriginAdvancer for BatchQueue<P, BF>

Source§

fn advance_origin<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = PipelineResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Advances the internal state of the lowest stage to the next l1 origin. This method is the equivalent of the reference implementation advance_l1_block.
Source§

impl<P, BF> OriginProvider for BatchQueue<P, BF>

Source§

fn origin(&self) -> Option<BlockInfo>

Returns the optional L1 BlockInfo origin.
Source§

impl<P, BF> SignalReceiver for BatchQueue<P, BF>

Source§

fn signal<'life0, 'async_trait>( &'life0 mut self, signal: Signal, ) -> Pin<Box<dyn Future<Output = PipelineResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Receives a signal from the driver.

Auto Trait Implementations§

§

impl<P, BF> Freeze for BatchQueue<P, BF>
where P: Freeze, BF: Freeze,

§

impl<P, BF> RefUnwindSafe for BatchQueue<P, BF>

§

impl<P, BF> Send for BatchQueue<P, BF>
where P: Send, BF: Send,

§

impl<P, BF> Sync for BatchQueue<P, BF>
where P: Sync, BF: Sync,

§

impl<P, BF> Unpin for BatchQueue<P, BF>
where P: Unpin, BF: Unpin,

§

impl<P, BF> UnwindSafe for BatchQueue<P, BF>
where P: UnwindSafe, BF: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more