kona_derive::stages

Struct BatchStream

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

BatchStream stage in the derivation pipeline.

This stage is introduced in the Holocene hardfork. It slots in between the ChannelReader and BatchQueue stages, buffering span batches until they are validated.

Implementations§

Source§

impl<P, BF> BatchStream<P, BF>

Source

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

Create a new BatchStream stage.

Source

pub fn is_active(&self) -> PipelineResult<bool>

Returns if the BatchStream stage is active based on the origin timestamp and holocene activation timestamp.

Source

pub fn get_single_batch( &mut self, parent: L2BlockInfo, l1_origins: &[BlockInfo], ) -> PipelineResult<SingleBatch>

Gets a SingleBatch from the in-memory buffer.

Source

pub fn try_hydrate_buffer( &mut self, parent: L2BlockInfo, l1_origins: &[BlockInfo], ) -> PipelineResult<()>

Hydrates the buffer with single batches derived from the span batch, if there is one queued up.

Trait Implementations§

Source§

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

Source§

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

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

impl<P, BF> NextBatchProvider for BatchStream<P, BF>

Source§

fn flush(&mut self)

Allows the stage to flush the buffer in the crate::stages::BatchStream if an invalid single batch is found. Pre-holocene hardfork, this will be a no-op.
Source§

fn span_buffer_size(&self) -> usize

Returns the number of SingleBatches that are currently buffered in the BatchStream from a SpanBatch.
Source§

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

Returns the next Batch in the ChannelReader stage, if the stage is not complete. This function can only be called once while the stage is in progress, and will return None on subsequent calls unless the stage is reset or complete. If the stage is complete and the batch has been consumed, an PipelineError::Eof error is returned.
Source§

impl<P, BF> OriginAdvancer for BatchStream<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 BatchStream<P, BF>

Source§

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

Returns the optional L1 BlockInfo origin.
Source§

impl<P, BF> SignalReceiver for BatchStream<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 BatchStream<P, BF>
where P: Freeze, BF: Freeze,

§

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

§

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

§

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

§

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

§

impl<P, BF> UnwindSafe for BatchStream<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