use std::default::{Default};
use std::io::{IoResult};
#[derive(Copy)]
pub struct PeerState {
pub choked: bool,
pub interested: bool
}
impl Default for PeerState {
fn default() -> Self {
PeerState{ choked: false, interested: false }
}
}
pub const CHOKE_ID: u8 = 0;
pub const UNCHOKE_ID: u8 = 1;
pub const INTERESTED_ID: u8 = 2;
pub const UNINTERESTED_ID: u8 = 3;
pub const HAVE_ID: u8 = 4;
pub const BITFIELD_ID: u8 = 5;
pub const STATE_PAYLOAD_LEN: u32 = 0;
pub const HAVE_PAYLOAD_LEN: u32 = 4;
#[derive(Copy)]
pub enum StateChange {
Choke,
Unchoke,
Interested,
Uninterested
}
pub trait StateSender {
fn send_state(&mut self, state: StateChange) -> IoResult<()>;
fn send_have(&mut self, piece: u32) -> IoResult<()>;
fn send_bitfield(&mut self, pieces: &[u8]) -> IoResult<()>;
}