Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3766fae

Browse filesBrowse files
committed
chore: cargo fmt
1 parent 3282319 commit 3766fae
Copy full SHA for 3766fae

File tree

Expand file treeCollapse file tree

1 file changed

+61
-16
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+61
-16
lines changed
Open diff view settings
Collapse file

‎matchbox_signaling/src/topologies/full_mesh.rs‎

Copy file name to clipboardExpand all lines: matchbox_signaling/src/topologies/full_mesh.rs
+61-16Lines changed: 61 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,14 @@ impl SignalingCallbacks for FullMeshCallbacks {}
124124
/// Signaling server isolated registry of peers, rooms and channels
125125
#[derive(Default, Debug, Clone)]
126126
pub struct IsolatedMeshState {
127-
rooms : HashMap<String, HashMap<PeerId, SignalingChannel>>,
127+
rooms: HashMap<String, HashMap<PeerId, SignalingChannel>>,
128128
peers: HashMap<PeerId, String>,
129129
}
130130

131131
/// Signaling server state for full mesh topologies
132132
#[derive(Default, Debug, Clone)]
133133
pub struct FullMeshState {
134-
pub(crate) state: StateObj<IsolatedMeshState>
134+
pub(crate) state: StateObj<IsolatedMeshState>,
135135
}
136136
impl SignalingState for FullMeshState {}
137137

@@ -142,15 +142,27 @@ impl FullMeshState {
142142
let event = Message::Text(JsonPeerEvent::NewPeer(peer).to_string().into());
143143

144144
// Create the room if needed
145-
if !self.state.lock().as_ref().unwrap().rooms.contains_key(&room) {
146-
self.state.lock().as_mut().unwrap().rooms.insert(room.clone(), HashMap::new());
145+
if !self
146+
.state
147+
.lock()
148+
.as_ref()
149+
.unwrap()
150+
.rooms
151+
.contains_key(&room)
152+
{
153+
self.state
154+
.lock()
155+
.as_mut()
156+
.unwrap()
157+
.rooms
158+
.insert(room.clone(), HashMap::new());
147159
}
148160

149161
// Safety: Lock must be scoped/dropped to ensure no deadlock with loop
150162
// let rooms = { self.peers.lock().unwrap().clone() };
151163
let state = { self.state.lock().unwrap().clone() };
152164
// let rooms = self.peers.lock();
153-
state.rooms.iter().for_each(|(name,peers)| {
165+
state.rooms.iter().for_each(|(name, peers)| {
154166
if *name == room {
155167
peers.keys().for_each(|peer_id| {
156168
if let Err(e) = self.try_send_to_peer(*peer_id, event.clone(), room.clone()) {
@@ -161,37 +173,70 @@ impl FullMeshState {
161173
});
162174

163175
// Safety: All prior locks in this method must be freed prior to this call
164-
self.state.lock().as_mut().unwrap().rooms.get_mut(&room).unwrap().insert(peer, sender);
165-
self.state.lock().as_mut().unwrap().peers.insert(peer,room.clone());
176+
self.state
177+
.lock()
178+
.as_mut()
179+
.unwrap()
180+
.rooms
181+
.get_mut(&room)
182+
.unwrap()
183+
.insert(peer, sender);
184+
self.state
185+
.lock()
186+
.as_mut()
187+
.unwrap()
188+
.peers
189+
.insert(peer, room.clone());
166190
}
167191

168192
/// Remove a peer from the state if it existed, returning the peer removed.
169193
pub fn remove_peer(&mut self, peer_id: &PeerId) {
170-
let peer_room = self.state.lock().as_ref().unwrap().peers.get(peer_id).unwrap().clone();
194+
let peer_room = self
195+
.state
196+
.lock()
197+
.as_ref()
198+
.unwrap()
199+
.peers
200+
.get(peer_id)
201+
.unwrap()
202+
.clone();
171203
self.state.lock().as_mut().unwrap().peers.remove(peer_id);
172204
let removed_peer = self
173205
.state
174206
.lock()
175207
.as_mut()
176208
.unwrap()
177209
.rooms
178-
.get_mut(&peer_room).unwrap().remove(peer_id).map(|sender| (*peer_id, sender));
210+
.get_mut(&peer_room)
211+
.unwrap()
212+
.remove(peer_id)
213+
.map(|sender| (*peer_id, sender));
179214
if let Some((peer_id, _sender)) = removed_peer {
180215
// Tell each connected peer about the disconnected peer.
181216
let event = Message::Text(JsonPeerEvent::PeerLeft(peer_id).to_string().into());
182217
// Safety: Lock must be scoped/dropped to ensure no deadlock with loop
183218
let state = { self.state.lock().unwrap().clone() };
184-
state.rooms.get(&peer_room).unwrap().iter().for_each(|(peer_id,_)| {
185-
match self.try_send_to_peer(*peer_id, event.clone(), peer_room.to_string()) {
186-
Ok(()) => info!("Sent peer remove to: {peer_id}"),
187-
Err(e) => error!("Failure sending peer remove: {e:?}"),
188-
}
189-
});
219+
state
220+
.rooms
221+
.get(&peer_room)
222+
.unwrap()
223+
.iter()
224+
.for_each(|(peer_id, _)| {
225+
match self.try_send_to_peer(*peer_id, event.clone(), peer_room.to_string()) {
226+
Ok(()) => info!("Sent peer remove to: {peer_id}"),
227+
Err(e) => error!("Failure sending peer remove: {e:?}"),
228+
}
229+
});
190230
}
191231
}
192232

193233
/// Send a message to a peer without blocking.
194-
pub fn try_send_to_peer(&self, id: PeerId, message: Message, room:String) -> Result<(), SignalingError> {
234+
pub fn try_send_to_peer(
235+
&self,
236+
id: PeerId,
237+
message: Message,
238+
room: String,
239+
) -> Result<(), SignalingError> {
195240
self.state
196241
.lock()
197242
.unwrap()

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.