198 message("TOGGLE_READY", ToggleReady), |
198 message("TOGGLE_READY", ToggleReady), |
199 message("START_GAME", StartGame), |
199 message("START_GAME", StartGame), |
200 message("TOGGLE_RESTRICT_JOINS", ToggleRestrictJoin), |
200 message("TOGGLE_RESTRICT_JOINS", ToggleRestrictJoin), |
201 message("TOGGLE_RESTRICT_TEAMS", ToggleRestrictTeams), |
201 message("TOGGLE_RESTRICT_TEAMS", ToggleRestrictTeams), |
202 message("TOGGLE_REGISTERED_ONLY", ToggleRegisteredOnly), |
202 message("TOGGLE_REGISTERED_ONLY", ToggleRegisteredOnly), |
|
203 message("READY", CheckerReady), |
203 ))(input) |
204 ))(input) |
204 } |
205 } |
205 |
206 |
206 fn single_arg_message(input: &[u8]) -> HwResult<HwProtocolMessage> { |
207 fn single_arg_message(input: &[u8]) -> HwResult<HwProtocolMessage> { |
207 fn message<'a, T, F, G>( |
208 fn message<'a, T, F, G>( |
229 message("ROOM_NAME\n", a_line, RoomName), |
230 message("ROOM_NAME\n", a_line, RoomName), |
230 message("REMOVE_TEAM\n", a_line, RemoveTeam), |
231 message("REMOVE_TEAM\n", a_line, RemoveTeam), |
231 message("ROUNDFINISHED", opt_arg, |_| RoundFinished), |
232 message("ROUNDFINISHED", opt_arg, |_| RoundFinished), |
232 message("PROTO\n", u16_line, Proto), |
233 message("PROTO\n", u16_line, Proto), |
233 message("QUIT", opt_arg, Quit), |
234 message("QUIT", opt_arg, Quit), |
|
235 message("CHECKED\nFAIL\n", a_line, CheckedFail), |
234 ))(input) |
236 ))(input) |
235 } |
237 } |
236 |
238 |
237 fn cmd_message<'a>(input: &'a [u8]) -> HwResult<'a, HwProtocolMessage> { |
239 fn cmd_message<'a>(input: &'a [u8]) -> HwResult<'a, HwProtocolMessage> { |
238 fn cmd_no_arg<'a>( |
240 fn cmd_no_arg<'a>( |
480 u32_line, |
482 u32_line, |
481 )), |
483 )), |
482 |(nick, reason, time)| BanNick(nick, reason, time), |
484 |(nick, reason, time)| BanNick(nick, reason, time), |
483 ), |
485 ), |
484 ), |
486 ), |
485 ))(input) |
487 map( |
|
488 preceded( |
|
489 tag("CHECKED\nOK"), |
|
490 alt(( |
|
491 map(peek(end_of_message), |_| None), |
|
492 map(preceded(newline, separated_list0(newline, a_line)), Some), |
|
493 )), |
|
494 ), |
|
495 |values| CheckedOk(values.unwrap_or_default()), |
|
496 ) |
|
497 ))(input) |
486 } |
498 } |
487 |
499 |
488 pub fn malformed_message(input: &[u8]) -> HwResult<()> { |
500 pub fn malformed_message(input: &[u8]) -> HwResult<()> { |
489 map(terminated(take_until(&b"\n\n"[..]), end_of_message), |_| ())(input) |
501 map(terminated(take_until(&b"\n\n"[..]), end_of_message), |_| ())(input) |
490 } |
502 } |
651 list_message("JOINED", RoomJoined), |
663 list_message("JOINED", RoomJoined), |
652 list_message("ADD_TEAM", TeamAdd), |
664 list_message("ADD_TEAM", TeamAdd), |
653 list_message("EM", ForwardEngineMessage), |
665 list_message("EM", ForwardEngineMessage), |
654 list_message("INFO", Info), |
666 list_message("INFO", Info), |
655 list_message("SERVER_VARS", ServerVars), |
667 list_message("SERVER_VARS", ServerVars), |
|
668 list_message("REPLAY", Replay), |
656 )), |
669 )), |
657 )), |
670 )), |
658 end_of_message, |
671 end_of_message, |
659 )(input) |
672 )(input) |
660 } |
673 } |