pub(super) struct SessionSdpNegotiationState {
pub(super) bootstrap_mids: Vec<Mid>,
pub(super) pending_offer: Option<SdpPendingOffer>,
pub(super) pending_offer_repair: Option<RepairSummary>,
pub(super) staged_offer: Option<Box<SdpOffer>>,
pub(super) staged_offer_upload_slots: Vec<SessionUploadSlot>,
pub(super) initial_offer_applied: bool,
pub(super) pending_recv_streams: BTreeMap<Mid, Vec<PendingRecvStream>>,
pub(super) negotiated_producer_parameters: BTreeMap<Mid, MediaStream>,
pub(super) queued_removal_mids: BTreeSet<Mid>,
}Expand description
offer and answer staging state for one worker-local session
this preserves str0m’s one-outstanding-offer rule while media lifecycle
code can stage additions or removals through serialized worker commands
Fields§
§bootstrap_mids: Vec<Mid>initial audio and video MIDs reused across repeated bootstrap offer attempts
pending_offer: Option<SdpPendingOffer>str0m token that must be accepted by the next remote answer
pending_offer_repair: Option<RepairSummary>repair payload pairs advertised by pending_offer, grouped by m-line
staged_offer: Option<Box<SdpOffer>>follow-up local offer prepared by media lifecycle and not yet delivered
staged_offer_upload_slots: Vec<SessionUploadSlot>§initial_offer_applied: boolwhether the remote side has answered the initial transport offer
pending_recv_streams: BTreeMap<Mid, Vec<PendingRecvStream>>producer recv identities that must be rebound after answer application
answer-time str0m updates can recreate StreamRx bindings, so the
worker keeps the intended SSRC and RID pairs until the matching answer
has been applied
negotiated_producer_parameters: BTreeMap<Mid, MediaStream>negotiated producer RTP parameters keyed by producer MID
answer application refreshes this table so transport handles can report the exact upload encodings that are now committed
queued_removal_mids: BTreeSet<Mid>negotiated MIDs whose inactive offer must wait for the current answer
Implementations§
Source§impl SessionSdpNegotiationState
impl SessionSdpNegotiationState
pub(super) fn stage_offer( &mut self, offer: SdpOffer, pending_offer: SdpPendingOffer, )
Trait Implementations§
Source§impl Default for SessionSdpNegotiationState
impl Default for SessionSdpNegotiationState
Source§fn default() -> SessionSdpNegotiationState
fn default() -> SessionSdpNegotiationState
Auto Trait Implementations§
impl Freeze for SessionSdpNegotiationState
impl !RefUnwindSafe for SessionSdpNegotiationState
impl Send for SessionSdpNegotiationState
impl Sync for SessionSdpNegotiationState
impl Unpin for SessionSdpNegotiationState
impl UnsafeUnpin for SessionSdpNegotiationState
impl UnwindSafe for SessionSdpNegotiationState
Blanket Implementations§
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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