terra_rust_api/
addressbook.rs

1use 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}