From 0ed3107270494e6c780066a22f532941869e19f2 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 9 Sep 2014 14:52:39 -0400 Subject: move callbacks out to their own trait this reduces the amount of things users have to worry about reimplementing, since we don't have associated items yet --- examples/client.rs | 35 ++++++----------------------------- 1 file changed, 6 insertions(+), 29 deletions(-) (limited to 'examples') diff --git a/examples/client.rs b/examples/client.rs index 236b07e..5b874bb 100644 --- a/examples/client.rs +++ b/examples/client.rs @@ -1,38 +1,15 @@ extern crate irc; use irc::constants::Pong; -use irc::Client; -use std::io; +pub struct ExampleClient; -struct ExampleClient { - builder: irc::ClientBuilder, - conn: io::BufferedStream, - socket_name: Option, -} - -impl irc::Client for ExampleClient { - fn new (builder: irc::ClientBuilder, conn: io::BufferedStream, socket_name: Option) -> ExampleClient { - ExampleClient { builder: builder, conn: conn, socket_name: socket_name } - } - fn builder (&self) -> &irc::ClientBuilder { - &self.builder - } - fn conn (&mut self) -> &mut io::BufferedStream { - &mut self.conn - } - fn socket_name (&self) -> Option<&str> { - match self.socket_name { - Some(ref name) => Some(name.as_slice()), - None => None, - } - } - - fn on_any_message (_client: &mut ExampleClient, m: &irc::Message) { +impl irc::ClientCallbacks for ExampleClient { + fn on_any_message (&mut self, _client: &mut irc::Client, m: &irc::Message) { print!("{}", m.to_protocol_string()); } - fn on_ping (client: &mut ExampleClient, _from: Option<&str>, server1: &str, server2: Option<&str>) { + fn on_ping (&mut self, client: &mut irc::Client, _from: Option<&str>, server1: &str, server2: Option<&str>) { let params = match server2 { Some(server2) => vec![server1.to_string(), server2.to_string()], None => vec![server1.to_string()], @@ -43,6 +20,6 @@ impl irc::Client for ExampleClient { fn main () { let builder = irc::ClientBuilder::new("doytest", "chat.freenode.net"); - let client: ExampleClient = builder.connect(); - client.run_loop(); + let client = builder.connect(); + client.run_loop_with_callbacks(ExampleClient); } -- cgit v1.2.3