Advertisement
Guest User

Untitled

a guest
Jul 1st, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 0.81 KB | None | 0 0
  1. pub fn from_binary(binary: &Vec<u8>) -> Result<Network, NetworkError> {
  2.     if binary.len() == 0 {
  3.         return Result::Err(NetworkError::new("Empty vec".to_string()));
  4.     }
  5.     match binary[0] {
  6.         1 => Ok(Network::Ping),
  7.         2 => {
  8.             if binary.len() <= 9 {
  9.                 return Result::Err(NetworkError::new("Login vec does not contain information about username/password".to_string()));
  10.             }
  11.             let username_length = to_u32(&binary[1..4]);
  12.             let password_length = to_u32(&binary[5..8]);
  13.            
  14.             let un = try!(get_string(&binary, 9, 9 + username_length));
  15.             let pw = try!(get_string(&binary, 9 + username_length, 9 + username_length + password_length));
  16.            
  17.             Result::Ok(Network::Login{
  18.                 username: un,
  19.                 password: pw
  20.             })
  21.         },
  22.         _ => Result::Err(NetworkError::new(format!("Unknown binary type: {}", binary[0])))
  23.     }
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement