gameServer2/src/protocol/parser.rs
changeset 13528 c8b626b0a3ad
parent 13524 5359ff75da3a
child 13666 09f4a30e50cc
equal deleted inserted replaced
13527:e3ae9eea0689 13528:c8b626b0a3ad
    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));
       
    27 named!(cmd_arg<&[u8], String>,
       
    28     map!(map_res!(take_until_either!(" \n"), str::from_utf8), String::from));
    27 named!( u8_line<&[u8],     u8>, map_res!(str_line, FromStr::from_str));
    29 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));
    30 named!(u16_line<&[u8],    u16>, map_res!(str_line, FromStr::from_str));
    29 named!(u32_line<&[u8],    u32>, map_res!(str_line, FromStr::from_str));
    31 named!(u32_line<&[u8],    u32>, map_res!(str_line, FromStr::from_str));
    30 named!(yes_no_line<&[u8], bool>, alt!(
    32 named!(yes_no_line<&[u8], bool>, alt!(
    31       do_parse!(tag_no_case!("YES") >> (true))
    33       do_parse!(tag_no_case!("YES") >> (true))
   102     | do_parse!(tag_no_case!("REGISTERED_ONLY") >> (ToggleServerRegisteredOnly))
   104     | do_parse!(tag_no_case!("REGISTERED_ONLY") >> (ToggleServerRegisteredOnly))
   103     | do_parse!(tag_no_case!("SUPER_POWER")     >> (SuperPower))
   105     | do_parse!(tag_no_case!("SUPER_POWER")     >> (SuperPower))
   104     | do_parse!(tag_no_case!("PART")     >> m: opt_space_param >> (Part(m)))
   106     | do_parse!(tag_no_case!("PART")     >> m: opt_space_param >> (Part(m)))
   105     | do_parse!(tag_no_case!("QUIT")     >> m: opt_space_param >> (Quit(m)))
   107     | do_parse!(tag_no_case!("QUIT")     >> m: opt_space_param >> (Quit(m)))
   106     | do_parse!(tag_no_case!("DELEGATE") >> spaces >> n: a_line  >> (Delegate(n)))
   108     | do_parse!(tag_no_case!("DELEGATE") >> spaces >> n: a_line  >> (Delegate(n)))
       
   109     | do_parse!(tag_no_case!("SAVE")     >> spaces >> n: cmd_arg >> spaces >> l: cmd_arg >> (Save(n, l)))
       
   110     | do_parse!(tag_no_case!("DELETE")   >> spaces >> n: a_line  >> (Delete(n)))
   107     | do_parse!(tag_no_case!("SAVEROOM") >> spaces >> r: a_line  >> (SaveRoom(r)))
   111     | do_parse!(tag_no_case!("SAVEROOM") >> spaces >> r: a_line  >> (SaveRoom(r)))
   108     | do_parse!(tag_no_case!("LOADROOM") >> spaces >> r: a_line  >> (LoadRoom(r)))
   112     | do_parse!(tag_no_case!("LOADROOM") >> spaces >> r: a_line  >> (LoadRoom(r)))
   109     | do_parse!(tag_no_case!("DELETE")   >> spaces >> r: a_line  >> (Delete(r)))
       
   110     | do_parse!(tag_no_case!("GLOBAL")   >> spaces >> m: a_line  >> (Global(m)))
   113     | do_parse!(tag_no_case!("GLOBAL")   >> spaces >> m: a_line  >> (Global(m)))
   111     | do_parse!(tag_no_case!("WATCH")    >> spaces >> i: a_line  >> (Watch(i)))
   114     | do_parse!(tag_no_case!("WATCH")    >> spaces >> i: a_line  >> (Watch(i)))
   112     | do_parse!(tag_no_case!("GREETING") >> spaces >> m: a_line  >> (Greeting(m)))
   115     | do_parse!(tag_no_case!("GREETING") >> spaces >> m: a_line  >> (Greeting(m)))
   113     | do_parse!(tag_no_case!("VOTE")     >> spaces >> m: yes_no_line >> (Vote(m)))
   116     | do_parse!(tag_no_case!("VOTE")     >> spaces >> m: yes_no_line >> (Vote(m)))
   114     | do_parse!(tag_no_case!("FORCE")    >> spaces >> m: yes_no_line >> (ForceVote(m)))
   117     | do_parse!(tag_no_case!("FORCE")    >> spaces >> m: yes_no_line >> (ForceVote(m)))