Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub fn from_binary(binary: &Vec<u8>) -> Result<Network, NetworkError> {
- if binary.len() == 0 {
- return Result::Err(NetworkError::new("Empty vec".to_string()));
- }
- match binary[0] {
- 1 => Ok(Network::Ping),
- 2 => {
- if binary.len() <= 9 {
- return Result::Err(NetworkError::new("Login vec does not contain information about username/password".to_string()));
- }
- let username_length = to_u32(&binary[1..4]);
- let password_length = to_u32(&binary[5..8]);
- let un = try!(get_string(&binary, 9, 9 + username_length));
- let pw = try!(get_string(&binary, 9 + username_length, 9 + username_length + password_length));
- Result::Ok(Network::Login{
- username: un,
- password: pw
- })
- },
- _ => Result::Err(NetworkError::new(format!("Unknown binary type: {}", binary[0])))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement