summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-09-04 16:12:10 -0400
committerJesse Luehrs <doy@tozt.net>2014-09-04 16:12:10 -0400
commit52997d0cd46d093a5be1129e22cba4e86ec98525 (patch)
tree823714943bdc1cd30b811d9d99528a6490df88b3
parentcd3a5cc95b73674cac7a3648ac40c35f10cf882b (diff)
downloadrust-irc-52997d0cd46d093a5be1129e22cba4e86ec98525.tar.gz
rust-irc-52997d0cd46d093a5be1129e22cba4e86ec98525.zip
connect should consume the clientbuilder
this way we can handle callbacks, which may not be cloneable or whatever
-rw-r--r--src/client.rs41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/client.rs b/src/client.rs
index e66efb2..4c063f6 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -59,18 +59,9 @@ impl ClientBuilder {
self
}
- pub fn connect (&mut self) -> Client {
- let mut client = self.connect_raw();
-
- match self.pass {
- Some(ref pass) => {
- client.write(Message::new(None, Pass, vec![pass.clone()]));
- },
- None => {},
- }
-
- client.write(Message::new(None, Nick, vec![self.nick.clone()]));
-
+ pub fn connect (self) -> Client {
+ let nick = self.nick.clone();
+ let pass = self.pass.clone();
let hostname = match self.hostname {
Some(ref host) => host.clone(),
None => {
@@ -78,22 +69,30 @@ impl ClientBuilder {
"localhost".to_string()
},
};
+ let username = self.username.clone();
+ let servername = self.servername.clone();
+ let realname = self.realname.clone();
+
+ let mut client = self.connect_raw();
+
+ match pass {
+ Some(pass) => {
+ client.write(Message::new(None, Pass, vec![pass]));
+ },
+ None => {},
+ }
+
+ client.write(Message::new(None, Nick, vec![nick]));
+
client.write(
Message::new(
- None,
- User,
- vec![
- self.username.clone(),
- hostname,
- self.servername.clone(),
- self.realname.clone(),
- ],
+ None, User, vec![ username, hostname, servername, realname ],
)
);
client
}
- pub fn connect_raw (&mut self) -> Client {
+ pub fn connect_raw (self) -> Client {
let mut stream = io::TcpStream::connect(self.servername.as_slice(), self.port);
Client { conn: io::BufferedStream::new(stream.unwrap()) }
}