DHT stats in HTTP API
This commit is contained in:
parent
f00f522767
commit
98dff76c40
10 changed files with 111 additions and 62 deletions
|
|
@ -28,6 +28,7 @@ use tokio_stream::wrappers::BroadcastStream;
|
|||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub struct DhtStats {
|
||||
#[serde(serialize_with = "crate::utils::serialize_id20")]
|
||||
pub id: Id20,
|
||||
pub outstanding_requests: usize,
|
||||
pub seen_peers: usize,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
mod bprotocol;
|
||||
mod dht;
|
||||
mod routing_table;
|
||||
mod utils;
|
||||
|
||||
pub use dht::Dht;
|
||||
pub use dht::DhtStats;
|
||||
pub use librqbit_core::id20::Id20;
|
||||
|
||||
pub static DHT_BOOTSTRAP: &[&str] = &["dht.transmissionbt.com:6881", "dht.libtorrent.org:25401"];
|
||||
|
|
|
|||
|
|
@ -5,14 +5,7 @@ use std::{
|
|||
|
||||
use librqbit_core::id20::Id20;
|
||||
use log::debug;
|
||||
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())
|
||||
}
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
enum BucketTreeNode {
|
||||
|
|
@ -23,9 +16,9 @@ enum BucketTreeNode {
|
|||
#[derive(Debug, Clone, Serialize)]
|
||||
pub struct BucketTree {
|
||||
bits: u8,
|
||||
#[serde(serialize_with = "serialize_id20")]
|
||||
#[serde(serialize_with = "crate::utils::serialize_id20")]
|
||||
start: Id20,
|
||||
#[serde(serialize_with = "serialize_id20")]
|
||||
#[serde(serialize_with = "crate::utils::serialize_id20")]
|
||||
end_inclusive: Id20,
|
||||
data: BucketTreeNode,
|
||||
}
|
||||
|
|
@ -314,7 +307,7 @@ impl Default for BucketTree {
|
|||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub struct RoutingTableNode {
|
||||
#[serde(serialize_with = "serialize_id20")]
|
||||
#[serde(serialize_with = "crate::utils::serialize_id20")]
|
||||
id: Id20,
|
||||
addr: SocketAddr,
|
||||
#[serde(skip)]
|
||||
|
|
@ -372,7 +365,7 @@ impl RoutingTableNode {
|
|||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub struct RoutingTable {
|
||||
#[serde(serialize_with = "serialize_id20")]
|
||||
#[serde(serialize_with = "crate::utils::serialize_id20")]
|
||||
id: Id20,
|
||||
size: usize,
|
||||
buckets: BucketTree,
|
||||
|
|
|
|||
9
crates/dht/src/utils.rs
Normal file
9
crates/dht/src/utils.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
use librqbit_core::id20::Id20;
|
||||
use serde::Serializer;
|
||||
|
||||
pub fn serialize_id20<S>(id: &Id20, ser: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
ser.serialize_str(&id.as_string())
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue