extern crate jch;
extern crate rand;
extern crate serde;
extern crate twox_hash;
use std::error::Error as StdError;
use std::fmt;
use serde::Serialize;
use crate::message::*;
#[derive(Serialize, Debug)]
pub enum Error {
Every,
}
impl StdError for Error {
fn description(&self) -> &str {
"TODO(indutny): implement me"
}
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Naught Node Error: {}", self.description())
}
}
pub struct Node {
id: u64,
peers: Vec<PeerInfo>,
}
impl Node {
pub fn new() -> Node {
Node {
id: rand::random::<u64>(),
peers: vec![],
}
}
pub fn info(&self) -> Result<response::Info, Error> {
Ok(response::Info {
id: self.id.to_be_bytes(),
peers: self.peers.clone(),
})
}
pub fn list_keys(&self) -> Result<response::ListKeys, Error> {
Ok(response::ListKeys { keys: vec![] })
}
pub fn add_node(&mut self, _msg: &request::AddNode) -> Result<response::AddNode, Error> {
Ok(response::AddNode {})
}
pub fn remove_node(
&mut self,
_msg: &request::RemoveNode,
) -> Result<response::RemoveNode, Error> {
Ok(response::RemoveNode {})
}
}