minimize the time we hold locks for and add sleep
This commit is contained in:
parent
02c08e6c75
commit
aaa530341d
2 changed files with 24 additions and 14 deletions
|
|
@ -153,6 +153,7 @@ impl<C: Crypto> Server<C> {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
frag_num += 1;
|
frag_num += 1;
|
||||||
|
sleep(Duration::from_millis(16)).await;
|
||||||
}
|
}
|
||||||
drop(inner);
|
drop(inner);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ use rnex_core::{
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use std::sync::atomic::Ordering::Relaxed;
|
use std::sync::atomic::Ordering::Relaxed;
|
||||||
|
use tokio::spawn;
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
|
|
||||||
use rnex_core::rmc::protocols::friends::{GameKey, MiiV2, PrincipalBasicInfo};
|
use rnex_core::rmc::protocols::friends::{GameKey, MiiV2, PrincipalBasicInfo};
|
||||||
|
|
@ -186,32 +187,40 @@ impl Friends for FriendsUser {
|
||||||
|
|
||||||
println!("acquiring user and current friends locks");
|
println!("acquiring user and current friends locks");
|
||||||
let users = self.fm.users.read().await;
|
let users = self.fm.users.read().await;
|
||||||
let mut curr_friends = self.current_friends.write().await;
|
|
||||||
println!("started summing users");
|
println!("started summing users");
|
||||||
for u in users.deref().iter().filter_map(|u| u.upgrade()) {
|
for u in users.deref().iter().filter_map(|u| u.upgrade()) {
|
||||||
let data = u.data.read().await;
|
let data = u.data.read().await;
|
||||||
let Some(data) = data.as_ref() else {
|
let Some(inner_data) = data.as_ref() else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
|
fr_list.push(friend_info_from_user(&inner_data));
|
||||||
|
drop(data);
|
||||||
|
|
||||||
|
let mut curr_friends = self.current_friends.write().await;
|
||||||
|
curr_friends.push(u.pid);
|
||||||
|
drop(curr_friends);
|
||||||
|
|
||||||
let mut fr = u.current_friends.write().await;
|
let mut fr = u.current_friends.write().await;
|
||||||
if !fr.contains(&self.pid) {
|
if !fr.contains(&self.pid) {
|
||||||
fr.push(self.pid);
|
fr.push(self.pid);
|
||||||
u.remote
|
drop(fr);
|
||||||
.process_nintendo_notification_event_1(NintendoNotificationEvent {
|
let data = any_self_fr_info.clone();
|
||||||
event_type: 30,
|
let u = u.clone();
|
||||||
sender: self.pid,
|
let sender = self.pid;
|
||||||
data: any_self_fr_info.clone(),
|
spawn(async move {
|
||||||
})
|
u.remote
|
||||||
.await;
|
.process_nintendo_notification_event_1(NintendoNotificationEvent {
|
||||||
|
event_type: 30,
|
||||||
|
sender,
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
.await;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
drop(fr);
|
||||||
}
|
}
|
||||||
drop(fr);
|
|
||||||
|
|
||||||
fr_list.push(friend_info_from_user(&data));
|
|
||||||
curr_friends.push(u.pid);
|
|
||||||
}
|
}
|
||||||
println!("finished summing users");
|
println!("finished summing users");
|
||||||
drop(curr_friends);
|
|
||||||
drop(users);
|
drop(users);
|
||||||
|
|
||||||
println!("adding self to users");
|
println!("adding self to users");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue