Skip to main content

C2ReconnectingEventReceiver

Struct C2ReconnectingEventReceiver 

Source
pub struct C2ReconnectingEventReceiver { /* private fields */ }
Expand description

The event stream for a reconnecting connection. Backed by two bridge channels created once, before the first physical connection, that only close when the supervisor itself terminates – a reconnect is invisible to it. The two channels mirror the split C2EventReceiver already carries per physical connection (regular events vs. harness_mcp read-proxy events), so a caller that wants harness_mcp events served ahead of a regular-event backlog can drain them independently instead of going through the merged recv().

Implementations§

Source§

impl C2ReconnectingEventReceiver

Source

pub async fn recv(&mut self) -> Option<RoutedNodeEvent>

Returns every event from both channels, harness_mcp-first when both are ready – the exact merge algorithm C2EventReceiver::recv already implements per physical connection, moved one layer up to this bridge’s own two channels. Existing callers that only ever call this method see the identical observable behavior as before the split: same events, same relative order.

Source

pub async fn recv_browser(&mut self) -> Option<BrowserStreamEvent>

Drains only the regular-event channel, leaving harness_mcp events untouched.

Source

pub async fn recv_regular(&mut self) -> Option<RoutedNodeEvent>

Source

pub async fn recv_harness_mcp(&mut self) -> Option<RoutedNodeEvent>

Drains only the harness_mcp channel, leaving regular events untouched.

Source

pub fn split_mut( &mut self, ) -> (&mut Receiver<RoutedNodeEvent>, &mut Receiver<RoutedNodeEvent>)

Splits into two independent mutable borrows, one per channel, so a caller can race both in a single tokio::select! (the harness runtime’s own main loop, prioritizing HarnessMcpReadCall ahead of its regular-event backlog). Two separate recv_regular/ recv_harness_mcp calls cannot be used together in one select!: each is an &mut self async method, so the future each returns borrows the whole receiver for its lifetime, and the borrow checker rejects two such futures coexisting even though they touch disjoint fields. Splitting once, up front, hands out two genuinely disjoint borrows instead.

Source

pub fn split_all( &mut self, ) -> (&mut Receiver<RoutedNodeEvent>, &mut Receiver<RoutedNodeEvent>, &mut Receiver<BrowserStreamEvent>)

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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