diff options
-rw-r--r-- | examples/client.rs | 8 | ||||
-rw-r--r-- | src/client.rs | 12 |
2 files changed, 15 insertions, 5 deletions
diff --git a/examples/client.rs b/examples/client.rs index 98900ef..f1f2479 100644 --- a/examples/client.rs +++ b/examples/client.rs @@ -2,9 +2,7 @@ extern crate irc; fn main () { let mut client = irc::ClientBuilder::new("doytest", "chat.freenode.net").connect(); - - loop { - let res = client.read(); - println!("{}", res); - } + client.run_loop_with(|m| { + println!("{}", m); + }); } diff --git a/src/client.rs b/src/client.rs index 2824df2..3beda7d 100644 --- a/src/client.rs +++ b/src/client.rs @@ -133,4 +133,16 @@ impl Client { None => None, } } + + // XXX eventually, we'll want to set up callbacks for specific events + // beforehand, and just have a `run_loop` method that loops and calls the + // preset callbacks as necessary. unfortunately, rust doesn't handle + // storing closures very well yet if they need to receive a borrowed + // pointer, and we would need to pass the client object into the callback + // in order to make this work + pub fn run_loop_with (&mut self, handler: |Message|) { + loop { + handler(self.read()); + } + } } |