privmsg.rs 979 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. use std::io;
  2. use drk::{
  3. net,
  4. serial::{Decodable, Encodable}, Result,
  5. };
  6. pub type PrivMsgId = u32;
  7. #[derive(Debug, Clone)]
  8. pub struct PrivMsg {
  9. pub id: PrivMsgId,
  10. pub nickname: String,
  11. pub channel: String,
  12. pub message: String,
  13. }
  14. impl net::Message for PrivMsg {
  15. fn name() -> &'static str {
  16. "privmsg"
  17. }
  18. }
  19. impl Encodable for PrivMsg {
  20. fn encode<S: io::Write>(&self, mut s: S) -> Result<usize> {
  21. let mut len = 0;
  22. len += self.id.encode(&mut s)?;
  23. len += self.nickname.encode(&mut s)?;
  24. len += self.channel.encode(&mut s)?;
  25. len += self.message.encode(&mut s)?;
  26. Ok(len)
  27. }
  28. }
  29. impl Decodable for PrivMsg {
  30. fn decode<D: io::Read>(mut d: D) -> Result<Self> {
  31. Ok(Self {
  32. id: Decodable::decode(&mut d)?,
  33. nickname: Decodable::decode(&mut d)?,
  34. channel: Decodable::decode(&mut d)?,
  35. message: Decodable::decode(&mut d)?,
  36. })
  37. }
  38. }