terra_rust_api/
addressbook.rs1use crate::terra_datetime_format;
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4
5#[derive(Deserialize, Serialize, Debug, Clone, Hash, PartialEq, Eq)]
6pub struct NodeIDIPPort {
7 pub id: String,
8 pub ip: String,
9 pub port: usize,
10}
11impl ToString for NodeIDIPPort {
12 fn to_string(&self) -> String {
13 format!("{}@{}:{}", self.id, self.ip, self.port)
14 }
15}
16
17#[derive(Deserialize, Serialize, Debug, Clone)]
18pub struct NodeAddr {
19 pub addr: NodeIDIPPort,
20 pub src: NodeIDIPPort,
21 pub buckets: Vec<usize>,
22 pub attempts: usize,
23 #[serde(with = "terra_datetime_format")]
24 pub last_attempt: DateTime<Utc>,
25 #[serde(with = "terra_datetime_format")]
26 pub last_success: DateTime<Utc>,
27 #[serde(with = "terra_datetime_format")]
28 pub last_ban_time: DateTime<Utc>,
29}
30
31#[derive(Deserialize, Serialize, Debug)]
32pub struct AddressBook {
33 pub key: String,
34 pub addrs: Vec<NodeAddr>,
35}