gameServer2/src/protocol/parser.rs
changeset 13520 1ee192f13456
parent 13478 d79795acaa73
child 13524 5359ff75da3a
equal deleted inserted replaced
13485:c85b324c4c2d 13520:1ee192f13456
    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));
    27 named!( u8_line<&[u8],     u8>, map_res!(str_line, FromStr::from_str));
    27 named!( u8_line<&[u8],     u8>, map_res!(str_line, FromStr::from_str));
       
    28 named!(u16_line<&[u8],    u16>, map_res!(str_line, FromStr::from_str));
    28 named!(u32_line<&[u8],    u32>, map_res!(str_line, FromStr::from_str));
    29 named!(u32_line<&[u8],    u32>, map_res!(str_line, FromStr::from_str));
    29 named!(yes_no_line<&[u8], bool>, alt!(
    30 named!(yes_no_line<&[u8], bool>, alt!(
    30       do_parse!(tag_no_case!("YES") >> (true))
    31       do_parse!(tag_no_case!("YES") >> (true))
    31     | do_parse!(tag_no_case!("NO") >> (false))));
    32     | do_parse!(tag_no_case!("NO") >> (false))));
    32 named!(opt_param<&[u8], Option<String> >, alt!(
    33 named!(opt_param<&[u8], Option<String> >, alt!(
    85     | do_parse!(tag!("EM")      >> eol >> m: a_line >> (EngineMessage(m)))
    86     | do_parse!(tag!("EM")      >> eol >> m: a_line >> (EngineMessage(m)))
    86     | do_parse!(tag!("TEAMCHAT")    >> eol >> m: a_line >> (TeamChat(m)))
    87     | do_parse!(tag!("TEAMCHAT")    >> eol >> m: a_line >> (TeamChat(m)))
    87     | do_parse!(tag!("ROOM_NAME")   >> eol >> n: a_line >> (RoomName(n)))
    88     | do_parse!(tag!("ROOM_NAME")   >> eol >> n: a_line >> (RoomName(n)))
    88     | do_parse!(tag!("REMOVE_TEAM") >> eol >> n: a_line >> (RemoveTeam(n)))
    89     | do_parse!(tag!("REMOVE_TEAM") >> eol >> n: a_line >> (RemoveTeam(n)))
    89 
    90 
    90     | do_parse!(tag!("PROTO")   >> eol >> d: u32_line >> (Proto(d)))
    91     | do_parse!(tag!("PROTO")   >> eol >> d: u16_line >> (Proto(d)))
    91 
    92 
    92     | do_parse!(tag!("QUIT")   >> msg: opt_param >> (Quit(msg)))
    93     | do_parse!(tag!("QUIT")   >> msg: opt_param >> (Quit(msg)))
    93 ));
    94 ));
    94 
    95 
    95 /** Recognizes messages preceded with CMD */
    96 /** Recognizes messages preceded with CMD */