~starkingdoms/starkingdoms

baf8ec8862d7c3b03ef0f50e92c5508271bcd1d3 — core 2 years ago 4f07d91
satisfy terra and alador
2 files changed, 20 insertions(+), 3 deletions(-)

M server/src/main.rs
M server/src/timer.rs
M server/src/main.rs => server/src/main.rs +9 -2
@@ 37,8 37,15 @@ async fn handle_request(conn: TcpStream, remote_addr: SocketAddr, mgr: ClientMan

async fn _handle_request(mut conn: TcpStream, remote_addr: SocketAddr, mgr: ClientManager, physics_data: Arc<RwLock<PhysicsData>>) -> Result<(), Box<dyn Error>> {
    let mut peek_buf = [0u8; 9];
    let read = conn.peek(&mut peek_buf).await?;
    if read == 9 && peek_buf == *b"GET /ping" {

    loop {
        let read = conn.peek(&mut peek_buf).await?;
        if read == 9 {
            break;
        }
    }

    if peek_buf == *b"GET /ping" {
        info!("[{}] incoming http connection", remote_addr);
        let ping_resp = serde_json::to_string(&ServerPingResponse {
            version: ServerPingResponseVersion {

M server/src/timer.rs => server/src/timer.rs +11 -1
@@ 76,7 76,12 @@ pub async fn timer_main(mgr: ClientManager, physics_data: Arc<RwLock<PhysicsData
            }
        }

        for (_addr, client_thread) in mgr.handlers.read().await.iter() {
        let mut to_remove = vec![];

        let mut mgr_w = mgr.handlers.write().await;
        let mgr_r = mgr_w.clone();

        for (addr, client_thread) in mgr_r.iter() {
            match client_thread.tx.send(ClientHandlerMessage::Tick).await {
                Ok(_) => {
                    match client_thread.tx.send(ClientHandlerMessage::PlayersUpdate {players: protocol_players.clone()}).await {


@@ 97,8 102,13 @@ pub async fn timer_main(mgr: ClientManager, physics_data: Arc<RwLock<PhysicsData
                }
                Err(e) => {
                    error!("unable to update a client thread: {}", e);
                    to_remove.push(addr);
                }
            }
        }

        for pending_removal in to_remove {
            mgr_w.remove(pending_removal);
        }
    }
}