use std::io::{IoResult};
pub const REQUEST_ID: u8 = 6;
pub const PIECE_ID: u8 = 7;
pub const CANCEL_ID: u8 = 8;
pub const REQUEST_PAYLOAD_LEN: u32 = 12;
pub const BASE_PIECE_PAYLOAD_LEN: u32 = 8;
pub const CANCEL_PAYLOAD_LEN: u32 = 12;
pub trait DataSender {
fn send_request(&mut self, piece: u32, offset: u32, length: u32) -> IoResult<()>;
fn send_block(&mut self, piece: u32, offset: u32, block: &[u8]) -> IoResult<()>;
fn send_cancel(&mut self, piece: u32, offset: u32, length: u32) -> IoResult<()>;
}