From fa31d565589cfe7df996d823658bdc02f28be5a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 15 Sep 2020 09:54:00 +0300 Subject: [PATCH] Use proper UUIDs for identifying rooms --- Cargo.lock | 79 ++++++++++++++++++++++++++++++++++++++++++++ publisher/Cargo.toml | 1 + server/Cargo.toml | 1 + server/src/rooms.rs | 14 ++------ 4 files changed, 83 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1a5de99..d5c45c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1010,6 +1010,68 @@ dependencies = [ "thiserror", ] +[[package]] +name = "gstreamer-app" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330e3e40c0e27680e52e38c599353dddfb14c373a148dd9154243f7cf92ba3c2" +dependencies = [ + "bitflags", + "futures-core", + "futures-sink", + "glib", + "glib-sys", + "gobject-sys", + "gstreamer", + "gstreamer-app-sys", + "gstreamer-base", + "gstreamer-sys", + "libc", + "once_cell", +] + +[[package]] +name = "gstreamer-app-sys" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "813f64275c9e7b33b828b9efcf9dfa64b95996766d4de996e84363ac65b87e3d" +dependencies = [ + "glib-sys", + "gstreamer-base-sys", + "gstreamer-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gstreamer-base" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "082f83c11a9d568e94e3a29d9fb22bf86dda44becfd4ba1d18446766b678f07c" +dependencies = [ + "bitflags", + "glib", + "glib-sys", + "gobject-sys", + "gstreamer", + "gstreamer-base-sys", + "gstreamer-sys", + "libc", +] + +[[package]] +name = "gstreamer-base-sys" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b7b6dc2d6e160a1ae28612f602bd500b3fa474ce90bf6bb2f08072682beef5" +dependencies = [ + "glib-sys", + "gobject-sys", + "gstreamer-sys", + "libc", + "system-deps", +] + [[package]] name = "gstreamer-sdp" version = "0.16.3" @@ -2313,6 +2375,16 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" +[[package]] +name = "uuid" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11" +dependencies = [ + "rand", + "serde", +] + [[package]] name = "v_escape" version = "0.12.1" @@ -2451,12 +2523,17 @@ dependencies = [ "serde_json", "structopt", "tokio", + "uuid", "webrtc-audio-publishing", ] [[package]] name = "webrtc-audio-publishing" version = "0.1.0" +dependencies = [ + "serde", + "uuid", +] [[package]] name = "webrtc-audio-server" @@ -2473,12 +2550,14 @@ dependencies = [ "futures", "glib", "gstreamer", + "gstreamer-app", "gstreamer-webrtc", "log", "openssl", "serde", "serde_json", "structopt", + "uuid", "webrtc-audio-publishing", ] diff --git a/publisher/Cargo.toml b/publisher/Cargo.toml index 6a7d0b0..2629985 100644 --- a/publisher/Cargo.toml +++ b/publisher/Cargo.toml @@ -18,4 +18,5 @@ serde_json = "1" structopt = "0.3" tokio = "0.2" async-tungstenite = { version = "0.8", features = ["tokio-runtime", "tokio-openssl"] } +uuid = "0.8" webrtc-audio-publishing = { path = "../common" } diff --git a/server/Cargo.toml b/server/Cargo.toml index 12661ef..2a5ea4d 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -23,4 +23,5 @@ env_logger = "0.7" serde = "1" serde_json = "1" structopt = "0.3" +uuid = { version = "0.8", features = ["v4"] } webrtc-audio-publishing = { path = "../common" } diff --git a/server/src/rooms.rs b/server/src/rooms.rs index 8fdc635..7a60627 100644 --- a/server/src/rooms.rs +++ b/server/src/rooms.rs @@ -14,7 +14,7 @@ use crate::subscriber::{self, Subscriber}; /// Unique identifier for a `Room`. #[derive(Debug, PartialEq, Eq, Copy, Clone, Hash)] -pub struct RoomId(u64); +pub struct RoomId(uuid::Uuid); /// Message to create a new `Room` for a `Publisher`. #[derive(Debug)] @@ -188,16 +188,6 @@ pub struct Room { } impl Room { - /// Returns a next valid `RoomId`. - fn next_room_id() -> RoomId { - // XXX: We assume that no more than 2**64 rooms are ever created - use std::sync::atomic::{self, AtomicU64}; - - static ROOM_ID: AtomicU64 = AtomicU64::new(0); - - RoomId(ROOM_ID.fetch_add(1, atomic::Ordering::Relaxed)) - } - /// Create a new `Room`. fn new( rooms: Addr, @@ -207,7 +197,7 @@ impl Room { ) -> Self { Room { rooms, - id: Self::next_room_id(), + id: RoomId(uuid::Uuid::new_v4()), name, description, publisher, -- GitLab