use eventbus::Event;
use super::{IrcEvent, IrcLineEvent};
use common::Side;
use common::line::IrcLine;
use std::io;
pub struct DisconnectEvent<T> {
data: T,
side: Side
}
impl<T> DisconnectEvent<T> {
pub fn get_data(&self) -> &T {
&self.data
}
}
macro_rules! disconnect_event {
($t:ty) => (
impl DisconnectEvent<$t> {
pub fn new(data: $t, side: Side) -> Self {
DisconnectEvent { data: data, side: side }
}
}
rwlock_event!(DisconnectEvent<$t>);
)
}
disconnect_event!(io::Error); disconnect_event!(IrcLine); disconnect_event!(());
impl<T> IrcEvent for DisconnectEvent<T> where DisconnectEvent<T>: Event {
fn get_side(&self) -> Side {
self.side
}
}
impl IrcLineEvent for DisconnectEvent<IrcLine> {
fn get_line(&self) -> &IrcLine {
&self.data
}
}