@@ -9,6 +9,7 @@ use std::{
99
1010use bitvec:: vec:: BitVec ;
1111use librqbit_utp:: UtpSocketUdp ;
12+ pub use peer:: id:: PeerId ;
1213use peer:: { info:: PeerInfo , state:: PeerState , supports:: PeerSupports } ;
1314use peer_comms:: {
1415 commands:: { PeerCommand , PeerResponse } ,
@@ -24,7 +25,7 @@ use tokio::{
2425} ;
2526use tracing:: { debug, error, info, trace, warn} ;
2627
27- use crate :: hashes:: { Hash , InfoHash } ;
28+ use crate :: hashes:: InfoHash ;
2829
2930mod peer;
3031pub mod peer_comms;
@@ -33,7 +34,6 @@ pub mod peer_comms;
3334/// previous renditions of libtortillas. The idea of having a type for the "key"
3435/// of a peer is still completely relevant though.
3536pub type PeerKey = SocketAddr ;
36- pub type PeerId = Arc < Hash < 20 > > ;
3737
3838pub const MAGIC_STRING : & [ u8 ] = b"BitTorrent protocol" ;
3939
@@ -49,7 +49,7 @@ pub struct Peer {
4949 /// indicates what extensions the peer supports.
5050 pub reserved : [ u8 ; 8 ] ,
5151 pub peer_supports : PeerSupports ,
52- pub id : Option < Hash < 20 > > ,
52+ pub id : Option < PeerId > ,
5353 pub info : PeerInfo ,
5454}
5555
@@ -174,7 +174,7 @@ impl Peer {
174174 }
175175 } ;
176176
177- self . id = Some ( * peer_id) ;
177+ self . id = Some ( peer_id) ;
178178 self . reserved = reserved;
179179 self . determine_supported ( ) . await ;
180180 debug ! ( %peer_addr, "Completed handshake with outgoing peer" ) ;
@@ -343,15 +343,14 @@ mod tests {
343343 use std:: str:: FromStr ;
344344
345345 use bitvec:: { bitvec, order:: Lsb0 } ;
346- use rand:: RngCore ;
347346 use tokio:: {
348347 io:: { AsyncReadExt , AsyncWriteExt } ,
349348 net:: TcpListener ,
350349 } ;
351350 use tracing_test:: traced_test;
352351
353352 use super :: { peer_comms:: stream:: validate_handshake, * } ;
354- use crate :: { parser:: MagnetUri , peers:: peer_comms:: messages:: Handshake } ;
353+ use crate :: { hashes :: Hash , parser:: MagnetUri , peers:: peer_comms:: messages:: Handshake } ;
355354
356355 #[ tokio:: test]
357356 #[ traced_test]
@@ -379,15 +378,13 @@ mod tests {
379378 let data = MagnetUri :: parse ( magnet_uri) . unwrap ( ) ;
380379
381380 // Stuff for generating our_id (yes, literally our ID as a peer in the network)
382- let mut our_id = [ 0u8 ; 20 ] ;
383- rand:: rng ( ) . fill_bytes ( & mut our_id) ;
384- let our_id = Hash :: from_bytes ( our_id) ;
381+ let our_id = PeerId :: new ( ) ;
385382
386383 peer
387384 . handle_peer (
388385 to_engine_tx,
389386 data. info_hash ( ) . unwrap ( ) ,
390- Arc :: new ( our_id) ,
387+ our_id,
391388 None ,
392389 None ,
393390 None ,
@@ -420,12 +417,12 @@ mod tests {
420417
421418 // Start peer
422419 let peer = Peer :: from_socket_addr ( SocketAddr :: from_str ( peer_addr) . unwrap ( ) ) ;
423- let peer_id = Hash :: new ( rand :: random :: < [ u8 ; 20 ] > ( ) ) ;
420+ let peer_id = PeerId :: new ( ) ;
424421 let ( to_engine_tx, mut to_engine_rx) = broadcast:: channel ( 100 ) ;
425422
426423 tokio:: spawn ( async move {
427424 peer
428- . handle_peer ( to_engine_tx, info_hash, Arc :: new ( peer_id) , None , None , None )
425+ . handle_peer ( to_engine_tx, info_hash, peer_id, None , None , None )
429426 . await ;
430427 } ) ;
431428
@@ -458,10 +455,11 @@ mod tests {
458455 trace ! ( "Received valid handshake" ) ;
459456
460457 // Send a handshake back
461- let our_id = Hash :: new ( rand:: random :: < [ u8 ; 20 ] > ( ) ) ;
458+ let our_id = PeerId :: new ( ) ;
459+
462460 // peer_stream.send_handshake() does not work?
463461 peer_stream
464- . write_all ( & Handshake :: new ( Arc :: new ( info_hash) , Arc :: new ( our_id) ) . to_bytes ( ) )
462+ . write_all ( & Handshake :: new ( Arc :: new ( info_hash) , our_id) . to_bytes ( ) )
465463 . await
466464 . unwrap ( ) ;
467465
0 commit comments