2016-01-15 16:36:08 +01:00
|
|
|
use io::IoError;
|
|
|
|
use rlp::*;
|
|
|
|
|
|
|
|
#[derive(Debug, Copy, Clone)]
|
|
|
|
pub enum DisconnectReason
|
|
|
|
{
|
|
|
|
DisconnectRequested,
|
2016-02-02 14:54:46 +01:00
|
|
|
_TCPError,
|
|
|
|
_BadProtocol,
|
2016-01-15 16:36:08 +01:00
|
|
|
UselessPeer,
|
2016-02-02 14:54:46 +01:00
|
|
|
_TooManyPeers,
|
|
|
|
_DuplicatePeer,
|
|
|
|
_IncompatibleProtocol,
|
|
|
|
_NullIdentity,
|
|
|
|
_ClientQuit,
|
|
|
|
_UnexpectedIdentity,
|
|
|
|
_LocalIdentity,
|
|
|
|
_PingTimeout,
|
2016-01-15 16:36:08 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
2016-01-22 00:11:19 +01:00
|
|
|
/// Network error.
|
2016-01-15 16:36:08 +01:00
|
|
|
pub enum NetworkError {
|
2016-01-22 00:11:19 +01:00
|
|
|
/// Authentication error.
|
2016-01-15 16:36:08 +01:00
|
|
|
Auth,
|
2016-01-22 00:11:19 +01:00
|
|
|
/// Unrecognised protocol.
|
2016-01-15 16:36:08 +01:00
|
|
|
BadProtocol,
|
2016-01-22 00:11:19 +01:00
|
|
|
/// Peer not found.
|
2016-01-15 16:36:08 +01:00
|
|
|
PeerNotFound,
|
2016-01-22 00:11:19 +01:00
|
|
|
/// Peer is diconnected.
|
2016-01-15 16:36:08 +01:00
|
|
|
Disconnect(DisconnectReason),
|
2016-01-22 00:11:19 +01:00
|
|
|
/// Socket IO error.
|
2016-01-15 16:36:08 +01:00
|
|
|
Io(IoError),
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<DecoderError> for NetworkError {
|
|
|
|
fn from(_err: DecoderError) -> NetworkError {
|
|
|
|
NetworkError::Auth
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<IoError> for NetworkError {
|
|
|
|
fn from(err: IoError) -> NetworkError {
|
|
|
|
NetworkError::Io(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|