gameServer2/src/protocol/parser.rs
changeset 13795 e335daaa77a9
parent 13666 09f4a30e50cc
child 13796 59ea2403f62d
equal deleted inserted replaced
13708:3264a26bbf8b 13795:e335daaa77a9
    16 use super::{
    16 use super::{
    17     messages::{HWProtocolMessage, HWProtocolMessage::*},
    17     messages::{HWProtocolMessage, HWProtocolMessage::*},
    18     test::gen_proto_msg
    18     test::gen_proto_msg
    19 };
    19 };
    20 use crate::server::coretypes::{
    20 use crate::server::coretypes::{
    21     HedgehogInfo, TeamInfo, GameCfg, VoteType
    21     HedgehogInfo, TeamInfo, GameCfg, VoteType, MAX_HEDGEHOGS_PER_TEAM
    22 };
    22 };
    23 
    23 
    24 named!(end_of_message, tag!("\n\n"));
    24 named!(end_of_message, tag!("\n\n"));
    25 named!(str_line<&[u8],   &str>, map_res!(not_line_ending, str::from_utf8));
    25 named!(str_line<&[u8],   &str>, map_res!(not_line_ending, str::from_utf8));
    26 named!(  a_line<&[u8], String>, map!(str_line, String::from));
    26 named!(  a_line<&[u8], String>, map!(str_line, String::from));
    40       do_parse!(peek!(tag!("\n\n")) >> (None))
    40       do_parse!(peek!(tag!("\n\n")) >> (None))
    41     | do_parse!(spaces >> s: str_line >> (Some(s.to_string())))));
    41     | do_parse!(spaces >> s: str_line >> (Some(s.to_string())))));
    42 named!(hog_line<&[u8], HedgehogInfo>,
    42 named!(hog_line<&[u8], HedgehogInfo>,
    43     do_parse!(name: str_line >> eol >> hat: str_line >>
    43     do_parse!(name: str_line >> eol >> hat: str_line >>
    44         (HedgehogInfo{name: name.to_string(), hat: hat.to_string()})));
    44         (HedgehogInfo{name: name.to_string(), hat: hat.to_string()})));
    45 named!(_8_hogs<&[u8], [HedgehogInfo; 8]>,
    45 named!(_8_hogs<&[u8], [HedgehogInfo; MAX_HEDGEHOGS_PER_TEAM as usize]>,
    46     do_parse!(h1: hog_line >> eol >> h2: hog_line >> eol >>
    46     do_parse!(h1: hog_line >> eol >> h2: hog_line >> eol >>
    47               h3: hog_line >> eol >> h4: hog_line >> eol >>
    47               h3: hog_line >> eol >> h4: hog_line >> eol >>
    48               h5: hog_line >> eol >> h6: hog_line >> eol >>
    48               h5: hog_line >> eol >> h6: hog_line >> eol >>
    49               h7: hog_line >> eol >> h8: hog_line >>
    49               h7: hog_line >> eol >> h8: hog_line >>
    50               ([h1, h2, h3, h4, h5, h6, h7, h8])));
    50               ([h1, h2, h3, h4, h5, h6, h7, h8])));