Advertisement
Guest User

Untitled

a guest
Oct 2nd, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. use network::bincode::SizeLimit;
  2. use network::bincode::rustc_serialize::{encode,decode};
  3. use rustc_serialize;
  4.  
  5.  
  6. #[derive(RustcEncodable,RustcDecodable,PartialEq,Debug)]
  7. pub enum Message {
  8. Invalid,
  9. Login {
  10. user: String,
  11. pass: String,
  12. conf: String
  13. },
  14. Logout {
  15. code: u8
  16. },
  17. Update {
  18. tick: u32
  19. }
  20. }
  21.  
  22. pub fn write(msg: &Message) -> Vec<u8> {
  23. match encode(msg, SizeLimit::Infinite) {
  24. Result::Ok(val) => val,
  25. Result::Err(err) => vec![0],
  26. }
  27. }
  28.  
  29. pub fn read(buf: &Vec<u8>) -> Message {
  30. match decode(&buf[..]) {
  31. Result::Ok(val) => val,
  32. Result::Err(err) => Message::Invalid,
  33. }
  34. }
  35.  
  36. #[cfg(test)]
  37. mod test
  38. {
  39. use network::protocol::*;
  40. #[test]
  41. fn message_serialize(){
  42. let msg0: Message = Message::Login {
  43. user: String::from("user"),
  44. pass: String::from("secret"),
  45. conf: String::from("looking good")
  46. };
  47. let buff = write(&msg0);
  48. assert!(buff.len() != 0);
  49. let msg1: Message = read(&buff);
  50. assert_eq!(msg0, msg1);
  51. }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement