Struct BlockHandler

Source
pub struct BlockHandler {
    pub current_context_id: RefCell<OutgoingContextId>,
    pub block_cache: RefCell<HashMap<IncomingEndpointContextId, ScopeContext>>,
    pub incoming_sections_queue: RefCell<VecDeque<IncomingSection>>,
    pub section_observers: RefCell<HashMap<(IncomingContextId, IncomingSectionIndex), Box<dyn FnMut(IncomingSection)>>>,
    pub incoming_blocks_history: RefCell<RingMap<BlockId, BlockHistoryData>>,
}

Fields§

§current_context_id: RefCell<OutgoingContextId>§block_cache: RefCell<HashMap<IncomingEndpointContextId, ScopeContext>>

a map of active request scopes for incoming blocks

§incoming_sections_queue: RefCell<VecDeque<IncomingSection>>

a queue of incoming request scopes the scopes can be retrieved from the request_scopes map

§section_observers: RefCell<HashMap<(IncomingContextId, IncomingSectionIndex), Box<dyn FnMut(IncomingSection)>>>

a map of observers for incoming response blocks (by context_id + block_index) contains an observer callback and an optional queue of blocks if the response block is a multi-block stream

§incoming_blocks_history: RefCell<RingMap<BlockId, BlockHistoryData>>

history of all incoming blocks

Implementations§

Source§

impl BlockHandler

Source

pub fn new() -> BlockHandler

Source

pub fn add_block_to_history( &self, block: &DXBBlock, original_socket_uuid: Option<ComInterfaceSocketUUID>, )

Adds a block to the history of incoming blocks if the block is not already in the history returns true if the block was added and not already in the history

Source

pub fn is_block_in_history(&self, block: &DXBBlock) -> bool

Checks if a block is already in the history

Source

pub fn get_block_data_from_history( &self, block: &DXBBlock, ) -> Option<BlockHistoryData>

Source

pub fn handle_incoming_block(&self, block: DXBBlock)

Source

pub fn get_new_context_id(&self) -> OutgoingContextId

Source

pub fn register_incoming_block_observer( &self, context_id: OutgoingContextId, section_index: OutgoingSectionIndex, ) -> UnboundedReceiver<IncomingSection>

Adds a new observer for incoming blocks with a specific scope id and block index Returns a receiver that can be awaited to get the incoming sections

Source

pub async fn wait_for_incoming_response_block( &self, context_id: OutgoingContextId, section_index: OutgoingSectionIndex, ) -> Option<IncomingSection>

Waits for incoming response block with a specific scope id and block index

Trait Implementations§

Source§

impl Debug for BlockHandler

Source§

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

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

impl Default for BlockHandler

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> Any for T
where T: Any,

Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<'src, T> IntoMaybe<'src, T> for T
where T: 'src,

Source§

type Proj<U: 'src> = U

Source§

fn map_maybe<R>( self, _f: impl FnOnce(&'src T) -> &'src R, g: impl FnOnce(T) -> R, ) -> <T as IntoMaybe<'src, T>>::Proj<R>
where R: 'src,

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,