From c5116ef186749a2ae57e3620ad766a46c178cbbb Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 3 Sep 2014 19:41:42 -0400 Subject: add support for writing irc messages --- src/client.rs | 9 +++++++++ src/message.rs | 30 +++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/client.rs b/src/client.rs index 9dd5191..86c3857 100644 --- a/src/client.rs +++ b/src/client.rs @@ -39,4 +39,13 @@ impl Client { None => fail!(), } } + + pub fn write (&mut self, msg: Message) { + match self.connection { + Some(ref mut conn) => { + msg.write_protocol_string(conn); + }, + None => fail!(), + } + } } diff --git a/src/message.rs b/src/message.rs index 8912834..d4db1b5 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1,4 +1,4 @@ -use constants::MessageType; +use constants::{CommandMessage, MessageType, ReplyMessage}; #[deriving(PartialEq, Eq, Show)] pub struct Message { @@ -43,6 +43,34 @@ impl Message { &self.params } + pub fn write_protocol_string (&self, w: &mut W) { + match &self.from { + &Some(ref f) => { write!(w, ":{} ", f); }, + &None => {}, + } + + match &self.message_type { + &CommandMessage(ref c) => { + write!(w, "{}", c); + }, + &ReplyMessage(ref r) => { + write!(w, "{}", r); + }, + } + + for param in self.params.iter() { + if param.as_slice().contains_char(' ') { + write!(w, " :{}", param); + } + else { + write!(w, " {}", param); + } + } + + write!(w, "\r\n"); + w.flush(); + } + fn parse_params(params: &str) -> Vec { let mut offset = 0; let len = params.len(); -- cgit v1.2.3-54-g00ecf