diff --git a/benches/.code.rs b/benches/.code.rs index ad14927..07b7683 100644 --- a/benches/.code.rs +++ b/benches/.code.rs @@ -14,8 +14,19 @@ mod types { mod table { include!("../src/table.rs"); } -mod cloud { - include!("../src/cloud.rs"); +mod engine { + pub mod common { + include!("../src/engine/common.rs"); + } + mod shared { + include!("../src/engine/shared.rs"); + } + mod device_thread { + include!("../src/engine/device_thread.rs"); + } + mod socket_thread { + include!("../src/engine/socket_thread.rs"); + } } mod config { include!("../src/config.rs"); diff --git a/benches/criterion.rs b/benches/criterion.rs index 6d4f6ad..2fb498b 100644 --- a/benches/criterion.rs +++ b/benches/criterion.rs @@ -1,6 +1,7 @@ #![allow(dead_code, unused_macros, unused_imports)] #[macro_use] extern crate serde; #[macro_use] extern crate log; +#[macro_use] extern crate tokio; use criterion::{criterion_group, criterion_main, Criterion, Throughput}; diff --git a/benches/valgrind.rs b/benches/valgrind.rs index 741be70..f56e7e4 100644 --- a/benches/valgrind.rs +++ b/benches/valgrind.rs @@ -1,6 +1,7 @@ #![allow(dead_code, unused_macros, unused_imports)] #[macro_use] extern crate serde; #[macro_use] extern crate log; +#[macro_use] extern crate tokio; use iai::{black_box, main}; diff --git a/src/engine/common.rs b/src/engine/common.rs new file mode 100644 index 0000000..bf7464f --- /dev/null +++ b/src/engine/common.rs @@ -0,0 +1,146 @@ +use std::{fs::File, hash::BuildHasherDefault}; +use tokio; + +use fnv::FnvHasher; + +use crate::{ + config::Config, + crypto::PeerCrypto, + device::Device, + engine::{ + device_thread::DeviceThread, + shared::{SharedPeerCrypto, SharedTable, SharedTraffic}, + socket_thread::SocketThread, + }, + error::Error, + messages::AddrList, + net::Socket, + payload::Protocol, + port_forwarding::PortForwarding, + types::NodeId, + util::{CtrlC, Time, TimeSource}, +}; + +pub type Hash = BuildHasherDefault; + +pub const STATS_INTERVAL: Time = 60; +pub const SPACE_BEFORE: usize = 100; + +pub struct PeerData { + pub addrs: AddrList, + #[allow(dead_code)] // TODO: export in status + pub last_seen: Time, + pub timeout: Time, + pub peer_timeout: u16, + pub node_id: NodeId, + pub crypto: PeerCrypto, +} + +#[derive(Clone)] +pub struct ReconnectEntry { + address: Option<(String, Time)>, + resolved: AddrList, + tries: u16, + timeout: u16, + next: Time, + final_timeout: Option