pulsar_network/
lib.rs

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}