Skip to main content

openrtc/coordination/
mod.rs

1pub mod room;
2
3#[cfg(target_arch = "wasm32")]
4pub(crate) fn now_millis_u64() -> u64 {
5    js_sys::Date::now() as u64
6}
7
8#[cfg(target_arch = "wasm32")]
9pub(crate) fn now_timestamp_rfc3339() -> String {
10    js_sys::Date::new_0()
11        .to_iso_string()
12        .as_string()
13        .unwrap_or_else(|| "1970-01-01T00:00:00.000Z".to_string())
14}
15
16#[cfg(target_arch = "wasm32")]
17pub(crate) fn timestamp_rfc3339_from_millis(millis: i64) -> String {
18    js_sys::Date::new(&wasm_bindgen::JsValue::from_f64(millis as f64))
19        .to_iso_string()
20        .as_string()
21        .unwrap_or_else(|| "1970-01-01T00:00:00.000Z".to_string())
22}
23
24#[cfg(not(target_arch = "wasm32"))]
25pub(crate) fn now_millis_u64() -> u64 {
26    std::time::SystemTime::now()
27        .duration_since(std::time::UNIX_EPOCH)
28        .unwrap_or_default()
29        .as_millis() as u64
30}
31
32#[cfg(not(target_arch = "wasm32"))]
33pub(crate) fn now_timestamp_rfc3339() -> String {
34    let now = std::time::SystemTime::now();
35    let dt: chrono::DateTime<chrono::Utc> = now.into();
36    dt.to_rfc3339_opts(chrono::SecondsFormat::Millis, true)
37}
38
39#[cfg(not(target_arch = "wasm32"))]
40pub(crate) fn timestamp_rfc3339_from_millis(millis: i64) -> String {
41    chrono::DateTime::<chrono::Utc>::from_timestamp_millis(millis)
42        .unwrap_or(chrono::DateTime::<chrono::Utc>::UNIX_EPOCH)
43        .to_rfc3339_opts(chrono::SecondsFormat::Millis, true)
44}