log dispatches and timeouts
This commit is contained in:
parent
f5fe1c4f29
commit
3be0cfa0ea
2 changed files with 19 additions and 2 deletions
|
@ -6,6 +6,8 @@ use tokio::{fs::File, io::AsyncWriteExt};
|
|||
use planetwars_rules::protocol::State;
|
||||
use tokio::sync::mpsc;
|
||||
|
||||
use crate::pw_match::PlayerCommand;
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[serde(tag = "type")]
|
||||
pub enum MatchLogMessage {
|
||||
|
@ -13,12 +15,19 @@ pub enum MatchLogMessage {
|
|||
GameState(State),
|
||||
#[serde(rename = "stderr")]
|
||||
StdErr(StdErrMessage),
|
||||
#[serde(rename = "timeout")]
|
||||
Timeout { player_id: u32 },
|
||||
#[serde(rename = "bad_command")]
|
||||
BadCommand {
|
||||
player_id: u32,
|
||||
command: String,
|
||||
error: String,
|
||||
},
|
||||
#[serde(rename = "dispatches")]
|
||||
Dispatches {
|
||||
player_id: u32,
|
||||
dispatches: Vec<PlayerCommand>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
|
|
|
@ -117,6 +117,9 @@ impl PwMatch {
|
|||
|
||||
fn log_player_action(&mut self, player_id: usize, player_action: PlayerAction) {
|
||||
match player_action {
|
||||
PlayerAction::Timeout => self.match_ctx.log(MatchLogMessage::Timeout {
|
||||
player_id: player_id as u32,
|
||||
}),
|
||||
PlayerAction::ParseError { data, error } => {
|
||||
// TODO: can this be handled better?
|
||||
let command =
|
||||
|
@ -128,14 +131,19 @@ impl PwMatch {
|
|||
error: error.to_string(),
|
||||
});
|
||||
}
|
||||
// TODO: handle other action types
|
||||
_ => {}
|
||||
PlayerAction::Commands(dispatches) => {
|
||||
self.match_ctx.log(MatchLogMessage::Dispatches {
|
||||
player_id: player_id as u32,
|
||||
dispatches,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct PlayerCommand {
|
||||
#[serde(flatten)]
|
||||
pub command: proto::Command,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub error: Option<proto::CommandError>,
|
||||
|
|
Loading…
Reference in a new issue