feat: implement timeouts
This commit is contained in:
parent
8f40e95480
commit
e7d0a17500
6 changed files with 248 additions and 124 deletions
|
|
@ -9,6 +9,7 @@ use tokio::task::JoinHandle;
|
|||
use serde::Serialize;
|
||||
use tokio::sync::Mutex;
|
||||
use crate::nex::matchmake::MatchmakeManager;
|
||||
use crate::rmc::protocols::HasRmcConnection;
|
||||
use crate::rmc::protocols::notifications::NotificationEvent;
|
||||
|
||||
struct RnexApiAuth;
|
||||
|
|
@ -45,10 +46,25 @@ async fn players_in_match(mmm: &State<Arc<MatchmakeManager>>, gid: u32) -> Optio
|
|||
Some(Json(gathering.connected_players.iter().filter_map(|p| p.upgrade()).map(|p| p.pid).collect()))
|
||||
}
|
||||
|
||||
#[get("/player/<pid>/disconnect")]
|
||||
async fn disconnect_player(_auth: RnexApiAuth, mmm: &State<Arc<MatchmakeManager>>, pid: u32) -> Option<()>{
|
||||
// this doesnt work and is broken, there might be some other way to remotely close gatherings...
|
||||
// also if anyone gets this working change it to POST cause the only reason its get is because
|
||||
// that makes testing it easier
|
||||
let mmm = mmm.users.read().await;
|
||||
|
||||
for player in mmm.values().filter_map(|p| p.upgrade()).filter(|p| p.pid == pid) {
|
||||
player.remote.get_connection().0.close_connection().await;
|
||||
}
|
||||
|
||||
|
||||
Some(())
|
||||
}
|
||||
|
||||
#[get("/gathering/<gid>/close")]
|
||||
async fn close_gathering(_auth: RnexApiAuth, mmm: &State<Arc<MatchmakeManager>>, gid: u32) -> Option<()>{
|
||||
// this doesnt work and is broken, there might be some other way to remotely close gatherings...
|
||||
// also if anyone gets this working change it to POST cause the only reason its get is because
|
||||
// also if anyone gets this working change it to POST cause the only reason its get is because
|
||||
// that makes testing it easier
|
||||
let mmm = mmm.sessions.read().await;
|
||||
|
||||
|
|
@ -73,7 +89,7 @@ async fn close_gathering(_auth: RnexApiAuth, mmm: &State<Arc<MatchmakeManager>>,
|
|||
pub async fn start_web(mgr: Arc<MatchmakeManager>) -> JoinHandle<()> {
|
||||
tokio::spawn(async move {
|
||||
rocket::build()
|
||||
.mount("/", routes![gatherings, players_in_match, close_gathering])
|
||||
.mount("/", routes![gatherings, players_in_match, close_gathering, disconnect_player])
|
||||
.manage(mgr)
|
||||
.launch().await
|
||||
.expect("unable to start webserver");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue