use crate::dht::{
dht_event::{DhtEvent, PeerHoldRequestData},
dht_trait::Dht,
};
use lib3h_protocol::{AddressRef, DidWork, Lib3hResult};
use std::collections::VecDeque;
pub struct RrDht {
inbox: VecDeque<DhtEvent>,
}
impl RrDht {
pub fn new() -> Self {
RrDht {
inbox: VecDeque::new(),
}
}
}
impl Dht for RrDht {
fn this_peer(&self) -> Lib3hResult<()> {
Ok(())
}
fn get_peer(&self, _peer_address: &str) -> Option<PeerHoldRequestData> {
None
}
fn fetch_peer(&self, _peer_address: &str) -> Option<PeerHoldRequestData> {
None
}
fn drop_peer(&self, _peer_address: &str) -> Lib3hResult<()> {
Ok(())
}
fn get_data(&self, _data_address: &AddressRef) -> Lib3hResult<Vec<u8>> {
Ok(vec![])
}
fn fetch_data(&self, _data_address: &AddressRef) -> Lib3hResult<Vec<u8>> {
Ok(vec![])
}
fn post(&mut self, evt: DhtEvent) -> Lib3hResult<()> {
self.inbox.push_back(evt);
Ok(())
}
fn process(&mut self) -> Lib3hResult<(DidWork, Vec<DhtEvent>)> {
let outbox = Vec::new();
let mut did_work = false;
loop {
let evt = match self.inbox.pop_front() {
None => break,
Some(msg) => msg,
};
did_work = true;
println!("(log.t) RrDht.process(): {:?}", evt)
}
Ok((did_work, outbox))
}
}