Implemented join on connection.

This commit is contained in:
Aaron Weiss 2014-11-03 03:11:14 -05:00
parent cd52c5b6a4
commit c7a0d4b83d
3 changed files with 16 additions and 4 deletions

View file

@ -21,6 +21,6 @@ fn main() {
let server = IrcServer::from_config(config).unwrap();
identify(&server).unwrap();
for message in server.iter() {
println!("{}", message);
print!("{}", message.into_string());
}
}

View file

@ -2,7 +2,7 @@
#![experimental]
use std::io::{BufferedReader, BufferedWriter, IoResult, TcpStream};
use conn::Connection;
use data::command::{Command, PONG};
use data::command::Command;
use data::config::Config;
use data::kinds::{IrcReader, IrcWriter};
use data::message::Message;
@ -72,7 +72,11 @@ impl<'a, T, U> IrcServer<'a, T, U> where T: IrcWriter, U: IrcReader {
fn handle_message(&self, message: &Message) {
if message.command[] == "PING" {
self.send(PONG(message.suffix.as_ref().unwrap()[], None)).unwrap();
utils::send_pong(self, message.suffix.as_ref().unwrap()[]).unwrap();
} else if message.command[] == "376" || message.command[] == "422" {
for chan in self.config.channels.iter() {
utils::send_join(self, chan[]).unwrap();
}
}
/* TODO: implement more message handling */
}

View file

@ -2,7 +2,7 @@
#![experimental]
use std::io::IoResult;
use data::command::{NICK, USER};
use data::command::{JOIN, NICK, PONG, USER};
use data::kinds::{IrcReader, IrcWriter};
use server::Server;
@ -11,3 +11,11 @@ pub fn identify<'a, T, U>(server: &Server<'a, T, U>) -> IoResult<()> where T: Ir
try!(server.send(NICK(server.config().nickname[])));
server.send(USER(server.config().username[], "0", server.config().realname[]))
}
pub fn send_pong<'a, T, U>(server: &Server<'a, T, U>, msg: &str) -> IoResult<()> where T: IrcWriter, U: IrcReader {
server.send(PONG(msg, None))
}
pub fn send_join<'a, T, U>(server: &Server<'a, T, U>, chanlist: &str) -> IoResult<()> where T: IrcWriter, U: IrcReader {
server.send(JOIN(chanlist, None))
}