mirror of
https://github.com/IntQuant/noita_entangled_worlds.git
synced 2025-10-19 07:03:16 +00:00
Make tangled not duplicate Connected events
This commit is contained in:
parent
959e7fc88e
commit
dc5b279253
3 changed files with 33 additions and 6 deletions
|
@ -166,9 +166,9 @@ impl NetManager {
|
|||
fn clean_dir(path: PathBuf) {
|
||||
let tmp = path.parent().unwrap().join("tmp");
|
||||
if tmp.exists() {
|
||||
remove_dir_all(tmp.clone()).unwrap();
|
||||
remove_dir_all(tmp.clone()).ok();
|
||||
}
|
||||
create_dir(tmp).unwrap();
|
||||
create_dir(tmp).ok();
|
||||
}
|
||||
|
||||
pub(crate) fn start_inner(
|
||||
|
|
|
@ -297,15 +297,21 @@ impl ConnectionManager {
|
|||
async fn handle_internal_event(&mut self, ev: InternalEvent) {
|
||||
match ev {
|
||||
InternalEvent::Connected(peer_id) => {
|
||||
info!("Peer {} connected", peer_id);
|
||||
if self.shared.remote_peers.contains_key(&peer_id) {
|
||||
// Already connected, no need to emit an event.
|
||||
return;
|
||||
}
|
||||
self.shared
|
||||
.inbound_channel
|
||||
.0
|
||||
.send(NetworkEvent::PeerConnected(peer_id))
|
||||
.expect("channel to be open");
|
||||
self.shared
|
||||
.remote_peers
|
||||
.insert(peer_id, RemotePeer);
|
||||
self.shared.remote_peers.insert(peer_id, RemotePeer);
|
||||
info!(
|
||||
"Peer {} connected, total connected: {}",
|
||||
peer_id,
|
||||
self.shared.remote_peers.len()
|
||||
);
|
||||
if self.is_server {
|
||||
self.server_broadcast_internal_message(
|
||||
PeerId::HOST,
|
||||
|
|
|
@ -233,4 +233,25 @@ mod test {
|
|||
Some(NetworkEvent::PeerConnected(PeerId(0)))
|
||||
);
|
||||
}
|
||||
|
||||
#[test_log::test(tokio::test)]
|
||||
async fn test_single_connection_event() {
|
||||
let settings: Option<Settings> = Some(Default::default());
|
||||
let addr = "127.0.0.1:56004".parse().unwrap();
|
||||
let host = Peer::host(addr, settings.clone()).unwrap();
|
||||
assert_eq!(host.shared.remote_peers.len(), 1);
|
||||
let peer1 = Peer::connect(addr, settings.clone()).unwrap();
|
||||
tokio::time::sleep(Duration::from_millis(10)).await;
|
||||
|
||||
assert_eq!(
|
||||
peer1.recv().next(),
|
||||
Some(NetworkEvent::PeerConnected(PeerId(0)))
|
||||
);
|
||||
assert_eq!(
|
||||
peer1.recv().next(),
|
||||
Some(NetworkEvent::PeerConnected(PeerId(1)))
|
||||
);
|
||||
|
||||
assert_eq!(peer1.recv().next(), None);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue