1mod client;
2mod envelope;
3mod message;
4mod peer;
5mod route;
6use std::collections::HashMap;
7use std::net::SocketAddr;
8use std::sync::{Arc, Mutex};
9use std::net::UdpSocket;
10
11#[derive(Clone, Debug)]
12pub struct Client {
13 bootstrap: bool,
14 private_key: [u8;32],
15 public_key: [u8;32],
16 peers: Arc<Mutex<HashMap<String, HashMap<u8, Peer>>>>,
17 route: Route,
18 seeders: Arc<Mutex<Vec<SocketAddr>>>,
19 incoming_socket: Arc<Mutex<UdpSocket>>,
20 outgoing_socket: Arc<Mutex<UdpSocket>>
21}
22
23#[derive(Clone, Debug)]
24pub enum Context { Block, BlockRequest, CancelTransaction, Transaction }
25
26#[derive(Clone, Debug)]
27pub struct Message { pub body: Vec<u8>, pub context: Context }
28
29#[derive(Clone, Debug)]
30pub enum Route { Main, Test }
31
32#[derive(Clone, Debug)]
33pub struct Peer {
34 pub address: SocketAddr,
35 pub public_key: [u8;32],
36 pub shared_key: [u8;32]
37}