Skip to main content

o_sfu_core/engine/room/
mod.rs

1//! Room lifecycle, membership and media-route orchestration.
2//!
3//! [`RoomManager`] publishes current rooms and coordinates admission, worker
4//! placement and empty-room removal. Each [`Room`] coordinates [`membership`],
5//! the desired [`media_graph`] and per-user [`outbound`] signaling.
6//!
7//! State transitions capture post-lock transport effects. [`source_policy`]
8//! recomputes route activity and packet selection from room and transport
9//! snapshots after state changes or coalesced policy wakeups. [`read_model`]
10//! captures room facts for diagnostics before they are combined with transport
11//! snapshots.
12
13#[cfg(any(test, feature = "testing-transport"))]
14#[expect(non_snake_case, reason = "test modules map to local TESTS directories")]
15pub(crate) mod TESTS;
16mod definition;
17mod directory;
18mod effects;
19mod factory;
20mod instance;
21mod manager;
22mod media_graph;
23mod membership;
24mod outbound;
25mod placement;
26mod read_model;
27mod recording;
28mod source_policy;
29mod state;
30mod transition;
31
32#[cfg(any(test, feature = "testing-transport"))]
33pub use TESTS::api::{NegotiatedPublish, RoomManagerTestApi, RoomTestApi};
34pub use factory::{RoomAdmissionPolicy, RoomConfig, RoomRuntimePolicy};
35pub(crate) use instance::RoomUserOperation;
36use instance::SourcePolicyGuard;
37pub use instance::{
38    Room, RoomJoinError, RoomManagerJoinError, RoomManagerServeError, RoomMediaCounts,
39};
40#[cfg(any(test, feature = "testing-transport"))]
41pub use manager::JoinPlacementTestGate;
42pub use manager::{
43    RoomManager, RoomUserAdmission, RuntimeRoomDirectorySnapshot, RuntimeRoomStatsSnapshot,
44};
45#[cfg(any(test, feature = "testing-transport"))]
46pub use media_graph::ConsumerRouteState;
47pub use membership::{JoinUserRequest, RoomUserPermissions, UserCloseReason};
48pub use outbound::{
49    BroadcastPayload, BroadcastPayloadError, DEFAULT_USER_OUTBOUND_QUEUE_BYTE_CAPACITY,
50    DEFAULT_USER_OUTBOUND_QUEUE_CAPACITY, MAX_BROADCAST_PAYLOAD_BYTES, RemoteTrackProjection,
51    RemoteTrackSnapshot, RoomEventMessage, UserOutbound, UserOutboundEvent, UserOutboundOverflow,
52    UserOutboundOverflowKind, UserOutboundQueueLimits, UserOutboundReceiver, UserOutboundSendError,
53    UserOutboundSender,
54};
55pub use placement::{RoomRuntimeContext, RouterPlacement, RouterPlacements, RouterPlacementsError};
56pub use read_model::{
57    IncomingBitrateSnapshot, RoomDetailCapture, RoomOverviewCapture, RoomUserCapture,
58    RoomUserStatsSnapshot, RoomUsersCapture,
59};
60#[cfg(feature = "internal-benchmarks")]
61pub use source_policy::run_source_policy_turn_for_benchmark;
62pub(crate) use transition::{DeactivateIntentOutcome, PublishIntentOutcome};
63
64#[cfg(any(test, feature = "testing-transport"))]
65pub use self::effects::batch::RoomEffectContext;