rust/hedgewars-server/src/protocol/parser.rs
changeset 14804 b3adc030104b
parent 14798 8015a6e4ca3c
child 14806 a1077e8d26f4
equal deleted inserted replaced
14803:50fcef24003f 14804:b3adc030104b
    13     str,
    13     str,
    14     str::{FromStr, Utf8Error},
    14     str::{FromStr, Utf8Error},
    15 };
    15 };
    16 
    16 
    17 use super::messages::{HWProtocolMessage, HWProtocolMessage::*};
    17 use super::messages::{HWProtocolMessage, HWProtocolMessage::*};
    18 use crate::server::coretypes::{GameCfg, HedgehogInfo, TeamInfo, VoteType, MAX_HEDGEHOGS_PER_TEAM};
    18 use crate::server::coretypes::{
       
    19     GameCfg, HedgehogInfo, ServerVar, TeamInfo, VoteType, MAX_HEDGEHOGS_PER_TEAM,
       
    20 };
    19 
    21 
    20 #[derive(Debug, PartialEq)]
    22 #[derive(Debug, PartialEq)]
    21 pub struct HWProtocolError {}
    23 pub struct HWProtocolError {}
    22 
    24 
    23 impl HWProtocolError {
    25 impl HWProtocolError {
   367         )),
   369         )),
   368     )?;
   370     )?;
   369     Ok((i, Cfg(cfg)))
   371     Ok((i, Cfg(cfg)))
   370 }
   372 }
   371 
   373 
       
   374 fn server_var_message(input: &[u8]) -> HWResult<HWProtocolMessage> {
       
   375     precededc(
       
   376         input,
       
   377         hw_tag("SET_SERVER_VAR\n"),
       
   378         alt((
       
   379             |i| {
       
   380                 precededc(i, hw_tag("MOTD_NEW\n"), a_line)
       
   381                     .map(|(i, s)| (i, SetServerVar(ServerVar::MOTDNew(s))))
       
   382             },
       
   383             |i| {
       
   384                 precededc(i, hw_tag("MOTD_OLD\n"), a_line)
       
   385                     .map(|(i, s)| (i, SetServerVar(ServerVar::MOTDOld(s))))
       
   386             },
       
   387             |i| {
       
   388                 precededc(i, hw_tag("LATEST_PROTO\n"), u16_line)
       
   389                     .map(|(i, n)| (i, SetServerVar(ServerVar::LatestProto(n))))
       
   390             },
       
   391         )),
       
   392     )
       
   393 }
       
   394 
   372 fn complex_message(input: &[u8]) -> HWResult<HWProtocolMessage> {
   395 fn complex_message(input: &[u8]) -> HWResult<HWProtocolMessage> {
   373     alt((
   396     alt((
   374         |i| {
   397         |i| {
   375             precededc(
   398             precededc(
   376                 i,
   399                 i,
   525                 alt((
   548                 alt((
   526                     no_arg_message,
   549                     no_arg_message,
   527                     single_arg_message,
   550                     single_arg_message,
   528                     cmd_message,
   551                     cmd_message,
   529                     config_message,
   552                     config_message,
       
   553                     server_var_message,
   530                     complex_message,
   554                     complex_message,
   531                 )),
   555                 )),
   532                 end_of_message,
   556                 end_of_message,
   533             )
   557             )
   534         },
   558         },