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#[allow(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::{
34    NegotiatedPublish, RoomManagerTestApi, RoomTestApi, RoomTestInspect, RoomTestLifecycle,
35    RoomTestMedia,
36};
37pub use factory::{RoomAdmissionPolicy, RoomConfig, RoomRuntimePolicy};
38pub(crate) use instance::RoomUserOperation;
39pub use instance::{
40    Room, RoomJoinError, RoomManagerJoinError, RoomManagerServeError, RoomMediaCounts,
41};
42#[cfg(any(test, feature = "testing-transport"))]
43pub use manager::JoinPlacementTestGate;
44pub use manager::{
45    RoomManager, RoomUserAdmission, RuntimeRoomDirectorySnapshot, RuntimeRoomStatsSnapshot,
46};
47#[cfg(any(test, feature = "testing-transport"))]
48pub use media_graph::ConsumerRouteState;
49pub use membership::{JoinUserRequest, RoomUserPermissions, UserCloseReason};
50pub use outbound::{
51    BroadcastPayload, BroadcastPayloadError, DEFAULT_USER_OUTBOUND_QUEUE_BYTE_CAPACITY,
52    DEFAULT_USER_OUTBOUND_QUEUE_CAPACITY, MAX_BROADCAST_PAYLOAD_BYTES, RemoteTrackProjection,
53    RemoteTrackSnapshot, RoomEventMessage, UserOutbound, UserOutboundEvent, UserOutboundOverflow,
54    UserOutboundOverflowKind, UserOutboundQueueLimits, UserOutboundReceiver, UserOutboundSendError,
55    UserOutboundSender,
56};
57pub use placement::{RoomRuntimeContext, RouterPlacement, RouterPlacements, RouterPlacementsError};
58pub use read_model::{
59    IncomingBitrateSnapshot, RoomDetailCapture, RoomOverviewCapture, RoomUserCapture,
60    RoomUserStatsSnapshot, RoomUsersCapture,
61};
62#[cfg(feature = "internal-benchmarks")]
63pub use source_policy::run_source_policy_turn_for_benchmark;
64pub(crate) use transition::{DeactivateIntentOutcome, PublishIntentOutcome};
65
66#[cfg(any(test, feature = "testing-transport"))]
67pub use self::effects::batch::RoomEffectContext;