Dumping routing table to JSON. Wow

This commit is contained in:
Igor Katson 2021-07-14 01:16:47 +01:00
parent ca25bac486
commit 32789f3c8c

View file

@ -5,7 +5,14 @@ use std::{
use librqbit_core::id20::Id20; use librqbit_core::id20::Id20;
use log::debug; use log::debug;
use serde::Serialize; use serde::{Serialize, Serializer};
fn serialize_id20<S>(id: &Id20, ser: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
ser.serialize_str(&id.as_string())
}
#[derive(Debug, Clone, Serialize)] #[derive(Debug, Clone, Serialize)]
enum BucketTreeNode { enum BucketTreeNode {
@ -16,7 +23,9 @@ enum BucketTreeNode {
#[derive(Debug, Clone, Serialize)] #[derive(Debug, Clone, Serialize)]
pub struct BucketTree { pub struct BucketTree {
bits: u8, bits: u8,
#[serde(serialize_with = "serialize_id20")]
start: Id20, start: Id20,
#[serde(serialize_with = "serialize_id20")]
end_inclusive: Id20, end_inclusive: Id20,
data: BucketTreeNode, data: BucketTreeNode,
} }
@ -305,6 +314,7 @@ impl Default for BucketTree {
#[derive(Debug, Clone, Serialize)] #[derive(Debug, Clone, Serialize)]
pub struct RoutingTableNode { pub struct RoutingTableNode {
#[serde(serialize_with = "serialize_id20")]
id: Id20, id: Id20,
addr: SocketAddr, addr: SocketAddr,
#[serde(skip)] #[serde(skip)]
@ -362,6 +372,7 @@ impl RoutingTableNode {
#[derive(Debug, Clone, Serialize)] #[derive(Debug, Clone, Serialize)]
pub struct RoutingTable { pub struct RoutingTable {
#[serde(serialize_with = "serialize_id20")]
id: Id20, id: Id20,
size: usize, size: usize,
buckets: BucketTree, buckets: BucketTree,