diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2017-12-12 11:41:36 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-12-12 11:41:36 -0800 |
commit | 1a0131928e54fce0623afe1bea5799277b40be6a (patch) | |
tree | 210646de95a842270c17ed81ed7bee09d3db03fc /src/peer.rs | |
parent | 66bf3345a944e087cf8b66a2fbbceb143873c5e4 (diff) | |
download | geniza-1a0131928e54fce0623afe1bea5799277b40be6a.tar.gz geniza-1a0131928e54fce0623afe1bea5799277b40be6a.zip |
start flushing out new APIs
Diffstat (limited to 'src/peer.rs')
-rw-r--r-- | src/peer.rs | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/src/peer.rs b/src/peer.rs index 5535b09..29b90a2 100644 --- a/src/peer.rs +++ b/src/peer.rs @@ -1,12 +1,31 @@ -//use errors::*; - -// DatPeer -// connection (thread?) -// last_sent_ts -// last_received_ts -// has_messages -// registers: vec? map? -// -// fn has(reg, u64) -// fn has_intersection(reg, bitfield) +use errors::*; +use sleep_register::{HyperRegister, SleepDirRegister}; +use protocol::DatConnection; +use bitfield::Bitfield; + +pub struct DatPeer { + registers: Vec<SleepDirRegister>, + connection: DatConnection, + have_log: Vec<Vec<Bitfield>>, +} + +impl DatPeer { + + pub fn new(connection: DatConnection, registers: Vec<SleepDirRegister>) -> DatPeer { + DatPeer { + registers, + connection, + have_log: vec![], + } + } + + pub fn has(self, register: u64, index: u64) -> Result<bool> { + for bitfield in self.have_log[register as usize].iter() { + if bitfield.get(index)? { + return Ok(true) + } + } + Ok(false) + } +} |