Skip to main content

o_sfu/config/
user.rs

1use std::time::Duration;
2
3use anyhow::Result;
4
5use super::{
6    UserConfig,
7    env::{Env, positive},
8};
9use crate::core::server::room::{
10    DEFAULT_USER_OUTBOUND_QUEUE_BYTE_CAPACITY, DEFAULT_USER_OUTBOUND_QUEUE_CAPACITY,
11};
12
13impl UserConfig {
14    pub(super) fn from_env(env: &Env<'_>) -> Result<Self> {
15        Ok(Self {
16            room_size: env.var("ROOM_SIZE").check(positive).default(100)?,
17            timeout_ms: env.var("USER_TIMEOUT_MS").check(positive).default(10_000)?,
18            ping_interval_ms: env
19                .var("PING_INTERVAL_MS")
20                .check(positive)
21                .default(60_000)?,
22            outbound_queue_capacity: env
23                .var("USER_OUTBOUND_QUEUE_CAPACITY")
24                .check(positive)
25                .default(DEFAULT_USER_OUTBOUND_QUEUE_CAPACITY)?,
26            outbound_queue_byte_capacity: env
27                .var("USER_OUTBOUND_QUEUE_BYTE_CAPACITY")
28                .check(positive)
29                .default(DEFAULT_USER_OUTBOUND_QUEUE_BYTE_CAPACITY)?,
30            room_reservation_ttl: env
31                .var("ROOM_RESERVATION_TTL")
32                .default(Duration::from_mins(1))?,
33        })
34    }
35}