pub struct InboundPacketDispatcher { /* private fields */ }Expand description
InboundPacketDispatcher - Inbound packet dispatcher
§Design Principles
- Single Responsibility: Only responsible for routing inbound packets
- Zero-copy: Pass bytes directly, no deserialization until needed
- Thread-safe: All components wrapped in Arc
- Response matching: Wake up pending_requests via OutprocOutGate
§Note on MediaTrack
MediaTrack (PayloadType::MediaRtp) is NOT handled here because:
- MediaTrack uses WebRTC native RTP channels, not DataChannel
- Media frames are delivered directly via RTCTrackRemote callbacks
- No protobuf serialization involved
- MediaFrameRegistry is registered at WebRTC PeerConnection level
Implementations§
Source§impl InboundPacketDispatcher
impl InboundPacketDispatcher
Sourcepub fn new(
mailbox: Arc<dyn Mailbox>,
data_stream_registry: Arc<DataStreamRegistry>,
outproc_out_gate: Option<Arc<OutprocOutGate>>,
) -> Self
pub fn new( mailbox: Arc<dyn Mailbox>, data_stream_registry: Arc<DataStreamRegistry>, outproc_out_gate: Option<Arc<OutprocOutGate>>, ) -> Self
Create new InboundPacketDispatcher
§Arguments
mailbox: Mailbox instancedata_stream_registry: DataStream registryoutproc_out_gate: OutprocOutGate instance (optional, for RPC response matching)
Sourcepub async fn dispatch(&self, packet: InboundPacket)
pub async fn dispatch(&self, packet: InboundPacket)
Sourcepub async fn handle_response(&self, envelope: RpcEnvelope) -> bool
pub async fn handle_response(&self, envelope: RpcEnvelope) -> bool
Auto Trait Implementations§
impl Freeze for InboundPacketDispatcher
impl !RefUnwindSafe for InboundPacketDispatcher
impl Send for InboundPacketDispatcher
impl Sync for InboundPacketDispatcher
impl Unpin for InboundPacketDispatcher
impl !UnwindSafe for InboundPacketDispatcher
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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