Updated for mutex changes.
This commit is contained in:
parent
3f5a72fd89
commit
dace078b1c
2 changed files with 21 additions and 20 deletions
20
src/conn.rs
20
src/conn.rs
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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[]);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue