Merge branch 'v0' of https://git.spbr.net/Spacebar/rust-nex into v0
This commit is contained in:
commit
6e47874c1f
3 changed files with 29 additions and 5 deletions
Binary file not shown.
|
|
@ -139,6 +139,9 @@ impl Friends for FriendsUser {
|
||||||
let Ok(any_self_fr_info) = Any::new(&self_fr_info) else {
|
let Ok(any_self_fr_info) = Any::new(&self_fr_info) else {
|
||||||
return Err(ErrorCode::RendezVous_ControlScriptFailure);
|
return Err(ErrorCode::RendezVous_ControlScriptFailure);
|
||||||
};
|
};
|
||||||
|
let Ok(any_self_presence) = Any::new(&self_fr_info.presence) else {
|
||||||
|
return Err(ErrorCode::RendezVous_ControlScriptFailure);
|
||||||
|
};
|
||||||
drop(data);
|
drop(data);
|
||||||
|
|
||||||
let mut fr_list = vec![FriendInfo {
|
let mut fr_list = vec![FriendInfo {
|
||||||
|
|
@ -197,6 +200,9 @@ 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;
|
||||||
|
if users.len() >= 100 {
|
||||||
|
return Err(ErrorCode::RendezVous_ConnectionFailure);
|
||||||
|
}
|
||||||
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;
|
||||||
|
|
@ -227,6 +233,18 @@ impl Friends for FriendsUser {
|
||||||
.await;
|
.await;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
let data = any_self_presence.clone();
|
||||||
|
let u = u.clone();
|
||||||
|
let sender = self.pid;
|
||||||
|
spawn(async move {
|
||||||
|
u.remote
|
||||||
|
.process_nintendo_notification_event_2(NintendoNotificationEvent {
|
||||||
|
event_type: 24,
|
||||||
|
sender,
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
.await;
|
||||||
|
});
|
||||||
drop(fr);
|
drop(fr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -263,18 +281,22 @@ impl Friends for FriendsUser {
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update_presence(&self, presence: NintendoPresenceV2) -> Result<(), ErrorCode> {
|
async fn update_presence(&self, presence: NintendoPresenceV2) -> Result<(), ErrorCode> {
|
||||||
|
info!("user updated presence: {:?}", presence);
|
||||||
let mut data = self.data.write().await;
|
let mut data = self.data.write().await;
|
||||||
let Some(inner_data) = data.as_mut() else {
|
let Some(inner_data) = data.as_mut() else {
|
||||||
|
log::error!("unable to get presence data");
|
||||||
return Err(ErrorCode::RendezVous_PermissionDenied);
|
return Err(ErrorCode::RendezVous_PermissionDenied);
|
||||||
};
|
};
|
||||||
inner_data.presence = presence;
|
inner_data.presence = presence;
|
||||||
let Ok(any_self_fr_info) = Any::new(&inner_data.presence) else {
|
let Ok(any_self_fr_info) = Any::new(&inner_data.presence) else {
|
||||||
|
log::error!("unable to create presence any data holder");
|
||||||
return Err(ErrorCode::RendezVous_ControlScriptFailure);
|
return Err(ErrorCode::RendezVous_ControlScriptFailure);
|
||||||
};
|
};
|
||||||
drop(data);
|
drop(data);
|
||||||
|
|
||||||
let users = self.fm.users.read().await;
|
let users = self.fm.users.read().await;
|
||||||
for u in users.deref().iter().filter_map(|u| u.upgrade()) {
|
for u in users.deref().iter().filter_map(|u| u.upgrade()) {
|
||||||
|
info!("sending presence update");
|
||||||
u.remote
|
u.remote
|
||||||
.process_nintendo_notification_event_2(NintendoNotificationEvent {
|
.process_nintendo_notification_event_2(NintendoNotificationEvent {
|
||||||
event_type: 24,
|
event_type: 24,
|
||||||
|
|
@ -308,6 +330,10 @@ impl Secure for FriendsUser {
|
||||||
station_urls: Vec<StationUrl>,
|
station_urls: Vec<StationUrl>,
|
||||||
) -> Result<(QResult, u32, StationUrl), ErrorCode> {
|
) -> Result<(QResult, u32, StationUrl), ErrorCode> {
|
||||||
let cid = self.fm.next_cid();
|
let cid = self.fm.next_cid();
|
||||||
|
let users = self.fm.users.read().await;
|
||||||
|
if users.len() >= 100 {
|
||||||
|
return Err(ErrorCode::RendezVous_ConnectionFailure);
|
||||||
|
}
|
||||||
Ok((
|
Ok((
|
||||||
QResult::success(ErrorCode::Core_Unknown),
|
QResult::success(ErrorCode::Core_Unknown),
|
||||||
cid,
|
cid,
|
||||||
|
|
|
||||||
|
|
@ -230,10 +230,8 @@ impl MatchmakeExtension for User {
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let mut session = session.lock().await;
|
let mut session = session.lock().await;
|
||||||
if session.session.user_password_enabled {
|
if join_session_param.user_password != session.session.user_password {
|
||||||
if join_session_param.user_password != session.session.user_password {
|
return Err(ErrorCode::RendezVous_InvalidPassword);
|
||||||
return Err(ErrorCode::RendezVous_InvalidPassword);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
session
|
session
|
||||||
|
|
@ -656,7 +654,7 @@ impl Ranking for User {
|
||||||
let team_votes = fetch_team_votes(fest_id)?;
|
let team_votes = fetch_team_votes(fest_id)?;
|
||||||
let mut wins = vec![0u32, 0u32];
|
let mut wins = vec![0u32, 0u32];
|
||||||
for r in &results {
|
for r in &results {
|
||||||
let won_team = r.team_id ^ (!r.team_win);
|
let won_team = (r.team_id ^ (!r.team_win)) & 1;
|
||||||
if let Some(team) = wins.get_mut(won_team as usize) {
|
if let Some(team) = wins.get_mut(won_team as usize) {
|
||||||
*team += 1
|
*team += 1
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue