Updated for mutex changes.

This commit is contained in:
Aaron Weiss 2015-01-01 20:40:58 -05:00
parent 3f5a72fd89
commit dace078b1c
2 changed files with 21 additions and 20 deletions

View file

@ -64,7 +64,7 @@ impl Connection<BufferedReader<NetStream>, BufferedWriter<NetStream>> {
/// Reconnects to the specified server, dropping the current connection.
pub fn reconnect(&self, host: &str, port: u16) -> IoResult<()> {
let use_ssl = match self.reader.lock().get_ref() {
let use_ssl = match self.reader.lock().unwrap().get_ref() {
&NetStream::UnsecuredTcpStream(_) => false,
#[cfg(feature = "ssl")]
&NetStream::SslTcpStream(_) => true,
@ -74,8 +74,8 @@ impl Connection<BufferedReader<NetStream>, BufferedWriter<NetStream>> {
} else {
try!(Connection::connect_internal(host, port))
};
*self.reader.lock() = reader;
*self.writer.lock() = writer;
*self.reader.lock().unwrap() = reader;
*self.writer.lock().unwrap() = writer;
Ok(())
}
@ -93,7 +93,7 @@ impl Connection<BufferedReader<NetStream>, BufferedWriter<NetStream>> {
/// Modifies the internal TcpStream using a function.
fn mod_stream(&self, f: |&mut TcpStream| -> IoResult<()>) -> IoResult<()> {
match self.reader.lock().get_mut() {
match self.reader.lock().unwrap().get_mut() {
&NetStream::UnsecuredTcpStream(ref mut tcp) => f(tcp),
#[cfg(feature = "ssl")]
&NetStream::SslTcpStream(ref mut ssl) => f(ssl.get_mut()),
@ -132,7 +132,7 @@ impl<T: IrcReader, U: IrcWriter> Connection<T, U> {
detail: Some(format!("Failed to decode {} as {}.", data, encoding.name())),
})
};
let mut writer = self.writer.lock();
let mut writer = self.writer.lock().unwrap();
try!(writer.write(data[]));
writer.flush()
}
@ -141,7 +141,7 @@ impl<T: IrcReader, U: IrcWriter> Connection<T, U> {
#[experimental]
#[cfg(not(feature = "encode"))]
pub fn send<T: ToMessage>(&self, to_msg: T) -> IoResult<()> {
let mut writer = self.writer.lock();
let mut writer = self.writer.lock().unwrap();
try!(writer.write_str(to_msg.to_message().into_string()[]));
writer.flush()
}
@ -158,7 +158,7 @@ impl<T: IrcReader, U: IrcWriter> Connection<T, U> {
detail: Some(format!("Invalid decoder: {}", encoding))
})
};
self.reader.lock().read_until(b'\n').and_then(|line|
self.reader.lock().unwrap().read_until(b'\n').and_then(|line|
match encoding.decode(line[], DecoderTrap::Replace) {
Ok(data) => Ok(data),
Err(data) => Err(IoError {
@ -174,19 +174,19 @@ impl<T: IrcReader, U: IrcWriter> Connection<T, U> {
#[experimental]
#[cfg(not(feature = "encoding"))]
pub fn recv(&self) -> IoResult<String> {
self.reader.lock().read_line()
self.reader.lock().unwrap().read_line()
}
/// Acquires the Reader lock.
#[experimental]
pub fn reader<'a>(&'a self) -> MutexGuard<'a, T> {
self.reader.lock()
self.reader.lock().unwrap()
}
/// Acquires the Writer lock.
#[experimental]
pub fn writer<'a>(&'a self) -> MutexGuard<'a, U> {
self.writer.lock()
self.writer.lock().unwrap()
}
}

View file

@ -89,7 +89,7 @@ impl<'a, T: IrcReader, U: IrcWriter> Server<'a, T, U> for IrcServer<T, U> {
}
fn list_users(&self, chan: &str) -> Option<Vec<User>> {
self.chanlists.lock().get(&chan.to_owned()).cloned()
self.chanlists.lock().unwrap().get(&chan.to_owned()).cloned()
}
}
@ -115,11 +115,12 @@ impl<T: IrcReader, U: IrcWriter> IrcServer<T, U> {
if let Some(users) = msg.suffix.clone() {
if let [_, _, ref chan] = msg.args[] {
for user in users.split_str(" ") {
if match self.chanlists.lock().get_mut(chan) {
if match self.chanlists.lock().unwrap().get_mut(chan) {
Some(vec) => { vec.push(User::new(user)); false },
None => true,
} {
self.chanlists.lock().insert(chan.clone(), vec!(User::new(user)));
self.chanlists.lock().unwrap().insert(chan.clone(),
vec!(User::new(user)));
}
}
}
@ -136,7 +137,7 @@ impl<T: IrcReader, U: IrcWriter> IrcServer<T, U> {
} else if resp == Response::ERR_NICKNAMEINUSE ||
resp == Response::ERR_ERRONEOUSNICKNAME {
let alt_nicks = self.config.get_alternate_nicknames();
let mut index = self.alt_nick_index.write();
let mut index = self.alt_nick_index.write().unwrap();
if *index.deref() >= alt_nicks.len() {
panic!("All specified nicknames were in use.")
} else {
@ -153,13 +154,13 @@ impl<T: IrcReader, U: IrcWriter> IrcServer<T, U> {
Some(ref suffix) => suffix[],
None => msg.args[0][],
};
if let Some(vec) = self.chanlists.lock().get_mut(&String::from_str(chan)) {
if let Some(ref source) = msg.prefix {
if let Some(i) = source.find('!') {
if let Some(vec) = self.chanlists.lock().unwrap().get_mut(&String::from_str(chan)) {
if let Some(ref src) = msg.prefix {
if let Some(i) = src.find('!') {
if msg.command[] == "JOIN" {
vec.push(User::new(source[..i]));
vec.push(User::new(src[..i]));
} else {
if let Some(n) = vec.as_slice().position_elem(&User::new(source[..i])) {
if let Some(n) = vec.as_slice().position_elem(&User::new(src[..i])) {
vec.swap_remove(n);
}
}
@ -167,7 +168,7 @@ impl<T: IrcReader, U: IrcWriter> IrcServer<T, U> {
}
}
} else if let ("MODE", [ref chan, ref mode, ref user]) = (msg.command[], msg.args[]) {
if let Some(vec) = self.chanlists.lock().get_mut(chan) {
if let Some(vec) = self.chanlists.lock().unwrap().get_mut(chan) {
if let Some(n) = vec.as_slice().position_elem(&User::new(user[])) {
vec[n].update_access_level(mode[]);
}