Skip to content

Commit

Permalink
Add WhoAmI request
Browse files Browse the repository at this point in the history
  • Loading branch information
de-luca committed Oct 25, 2022
1 parent 2f752e1 commit d93be08
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 18 deletions.
1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ version = "0.1.0"
authors = ["Bastien de Luca <dev@de-luca.io>"]
edition = "2018"
license = "AGPL-3.0-or-later"
license-file = "LICENSE"

[dependencies]
uuid = { version = "0.8", features = ["serde", "v4"] }
Expand Down
41 changes: 24 additions & 17 deletions src/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,28 +67,31 @@ impl Handler {

fn route(&self, peer_id: Uuid, payload: &request::Payload) {
match payload {
request::Payload::WhoAmI(_) => self.who_am_i(peer_id),
request::Payload::Create(_) => self.create(peer_id),
request::Payload::Join(params) => self.join(peer_id, params),
request::Payload::Signal(params) => self.signal(peer_id, params),
};
}

fn who_am_i(&self, peer_id: Uuid) {
self.reply(
peer_id,
serde_json::to_string(&Payload::WhoAmI(peer_id.to_owned())).unwrap(),
);
}

fn create(&self, peer_id: Uuid) {
let mut room = Room::new();
room.add_peer(peer_id);

self.rooms.lock().unwrap().insert(room.id, room.to_owned());
info!("CREATED THE ROOM {}", &room.id);

self.peers
.lock()
.unwrap()
.get(&peer_id)
.unwrap()
.unbounded_send(Message::Text(
serde_json::to_string(&Payload::Created(room.id.to_owned())).unwrap(),
))
.unwrap();
self.reply(
peer_id,
serde_json::to_string(&Payload::Created(room.id.to_owned())).unwrap(),
);
}

fn join(&self, peer_id: Uuid, params: &request::Join) {
Expand All @@ -115,18 +118,22 @@ impl Handler {
}

fn signal(&self, peer_id: Uuid, params: &request::Signal) {
self.reply(
params.peer_id,
serde_json::to_string(&Payload::Signal(Signal {
peer_id,
data: params.data.to_owned(),
})).unwrap(),
);
}

fn reply(&self, to: Uuid, msg: String) {
self.peers
.lock()
.unwrap()
.get(&params.peer_id)
.get(&to)
.unwrap()
.unbounded_send(Message::Text(
serde_json::to_string(&Payload::Signal(Signal {
peer_id,
data: params.data.to_owned(),
}))
.unwrap(),
))
.unbounded_send(Message::Text(msg))
.unwrap();
}

Expand Down
4 changes: 4 additions & 0 deletions src/request.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@ use uuid::Uuid;
#[serde(tag = "method", content = "params")]
#[serde(rename_all(deserialize = "lowercase"))]
pub enum Payload {
WhoAmI(WhoAmI),
Create(Create),
Join(Join),
Signal(Signal),
}

#[derive(Deserialize, Debug)]
pub struct WhoAmI {}

#[derive(Deserialize, Debug)]
pub struct Create {}

Expand Down
1 change: 1 addition & 0 deletions src/response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use uuid::Uuid;
#[serde(tag = "event", content = "data")]
#[serde(rename_all = "lowercase")]
pub enum Payload {
WhoAmI(Uuid),
Created(Uuid),
Joined(HashSet<Uuid>),
Signal(Signal),
Expand Down

0 comments on commit d93be08

Please sign in to comment.