Add support for BTv2 magnet links
This commit is contained in:
parent
1157866152
commit
0836b651a7
21 changed files with 236 additions and 157 deletions
|
|
@ -6,7 +6,7 @@ use std::{
|
|||
|
||||
use bencode::{ByteBuf, ByteString};
|
||||
use clone_to_owned::CloneToOwned;
|
||||
use librqbit_core::id20::Id20;
|
||||
use librqbit_core::hash_id::Id20;
|
||||
use serde::{
|
||||
de::{IgnoredAny, Unexpected},
|
||||
Deserialize, Deserializer, Serialize,
|
||||
|
|
@ -229,7 +229,7 @@ impl<'de> Deserialize<'de> for CompactNodeInfo {
|
|||
let ip = Ipv4Addr::new(chunk[20], chunk[21], chunk[22], chunk[23]);
|
||||
let port = ((chunk[24] as u16) << 8) + chunk[25] as u16;
|
||||
buf.push(Node {
|
||||
id: Id20(node_id),
|
||||
id: Id20::new(node_id),
|
||||
addr: SocketAddrV4::new(ip, port),
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ use futures::{stream::FuturesUnordered, Stream, StreamExt, TryFutureExt};
|
|||
|
||||
use leaky_bucket::RateLimiter;
|
||||
use librqbit_core::{
|
||||
id20::Id20,
|
||||
hash_id::Id20,
|
||||
peer_id::generate_peer_id,
|
||||
spawn_utils::{spawn, spawn_with_cancel},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ use std::time::Duration;
|
|||
|
||||
pub use crate::dht::DhtStats;
|
||||
pub use crate::dht::{DhtConfig, DhtState, RequestPeersStream};
|
||||
pub use librqbit_core::id20::Id20;
|
||||
pub use librqbit_core::hash_id::Id20;
|
||||
pub use persistence::{PersistentDht, PersistentDhtConfig};
|
||||
|
||||
pub type Dht = Arc<DhtState>;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use std::{
|
|||
|
||||
use bencode::ByteString;
|
||||
use chrono::{DateTime, Utc};
|
||||
use librqbit_core::id20::Id20;
|
||||
use librqbit_core::hash_id::Id20;
|
||||
use parking_lot::RwLock;
|
||||
use rand::RngCore;
|
||||
use serde::{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use std::{net::SocketAddr, time::Instant};
|
||||
|
||||
use librqbit_core::id20::Id20;
|
||||
use librqbit_core::hash_id::Id20;
|
||||
use rand::RngCore;
|
||||
use serde::{ser::SerializeStruct, Deserialize, Serialize, Serializer};
|
||||
use tracing::{debug, trace};
|
||||
|
|
@ -132,7 +132,7 @@ impl<'a> Iterator for BucketTreeIterator<'a> {
|
|||
pub fn generate_random_id(start: &Id20, bits: u8) -> Id20 {
|
||||
let mut data = [0u8; 20];
|
||||
rand::thread_rng().fill_bytes(&mut data);
|
||||
let mut data = Id20(data);
|
||||
let mut data = Id20::new(data);
|
||||
let remaining_bits = 160 - bits;
|
||||
for bit in 0..remaining_bits {
|
||||
data.set_bit(bit, start.get_bit(bit));
|
||||
|
|
@ -199,8 +199,8 @@ impl BucketTree {
|
|||
BucketTree {
|
||||
data: vec![BucketTreeNode {
|
||||
bits: 160,
|
||||
start: Id20([0u8; 20]),
|
||||
end_inclusive: Id20([0xff; 20]),
|
||||
start: Id20::new([0u8; 20]),
|
||||
end_inclusive: Id20::new([0xff; 20]),
|
||||
data: BucketTreeNodeData::Leaf(Default::default()),
|
||||
}],
|
||||
size: 0,
|
||||
|
|
@ -583,7 +583,7 @@ mod tests {
|
|||
str::FromStr,
|
||||
};
|
||||
|
||||
use librqbit_core::id20::Id20;
|
||||
use librqbit_core::hash_id::Id20;
|
||||
use rand::Rng;
|
||||
|
||||
use crate::routing_table::compute_split_start_end;
|
||||
|
|
@ -592,8 +592,8 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn compute_split_start_end_root() {
|
||||
let start = Id20([0u8; 20]);
|
||||
let end = Id20([0xff; 20]);
|
||||
let start = Id20::new([0u8; 20]);
|
||||
let end = Id20::new([0xff; 20]);
|
||||
assert_eq!(
|
||||
compute_split_start_end(start, end, 160),
|
||||
(
|
||||
|
|
@ -612,7 +612,7 @@ mod tests {
|
|||
#[test]
|
||||
fn compute_split_start_end_second_split() {
|
||||
let start = Id20::from_str("8000000000000000000000000000000000000000").unwrap();
|
||||
let end = Id20([0xff; 20]);
|
||||
let end = Id20::new([0xff; 20]);
|
||||
assert_eq!(
|
||||
compute_split_start_end(start, end, 159),
|
||||
(
|
||||
|
|
@ -631,7 +631,7 @@ mod tests {
|
|||
#[test]
|
||||
fn compute_split_start_end_3() {
|
||||
let start = Id20::from_str("8000000000000000000000000000000000000000").unwrap();
|
||||
let end = Id20([0xff; 20]);
|
||||
let end = Id20::new([0xff; 20]);
|
||||
assert_eq!(
|
||||
compute_split_start_end(start, end, 159),
|
||||
(
|
||||
|
|
@ -650,7 +650,7 @@ mod tests {
|
|||
fn random_id_20() -> Id20 {
|
||||
let mut id20 = [0u8; 20];
|
||||
rand::thread_rng().fill(&mut id20);
|
||||
Id20(id20)
|
||||
Id20::new(id20)
|
||||
}
|
||||
|
||||
fn generate_socket_addr() -> SocketAddr {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use librqbit_core::id20::Id20;
|
||||
use librqbit_core::hash_id::Id20;
|
||||
use serde::Serializer;
|
||||
|
||||
pub fn serialize_id20<S>(id: &Id20, ser: S) -> Result<S::Ok, S::Error>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue