use kademlia_routing_table::RoutingTable;
use xor_name::XorName;
use authority::Authority;
use messages::{Request, Response};
use std::fmt::{self, Debug, Formatter};
#[derive(Clone, Eq, PartialEq)]
pub enum Event {
Request {
request: Request,
src: Authority,
dst: Authority,
},
Response {
response: Response,
src: Authority,
dst: Authority,
},
NodeAdded(XorName, RoutingTable<XorName>),
NodeLost(XorName, RoutingTable<XorName>),
Connected,
RestartRequired,
Terminate,
Tick,
}
impl Debug for Event {
fn fmt(&self, formatter: &mut Formatter) -> fmt::Result {
match *self {
Event::Request { ref request, ref src, ref dst } => {
write!(formatter,
"Event::Request {{ request: {:?}, src: {:?}, dst: {:?} }}",
request,
src,
dst)
}
Event::Response { ref response, ref src, ref dst } => {
write!(formatter,
"Event::Response {{ response: {:?}, src: {:?}, dst: {:?} }}",
response,
src,
dst)
}
Event::NodeAdded(ref node_name, _) => {
write!(formatter,
"Event::NodeAdded({:?}, routing_table)",
node_name)
}
Event::NodeLost(ref node_name, _) => {
write!(formatter, "Event::NodeLost({:?}, routing_table)", node_name)
}
Event::Connected => write!(formatter, "Event::Connected"),
Event::RestartRequired => write!(formatter, "Event::RestartRequired"),
Event::Terminate => write!(formatter, "Event::Terminate"),
Event::Tick => write!(formatter, "Event::Tick"),
}
}
}