pub struct UdpTracker { /* private fields */ }Expand description
UDP tracker client (BEP 15).
Implementations§
Source§impl UdpTracker
impl UdpTracker
Sourcepub fn with_timeout(self, timeout: Duration) -> Self
pub fn with_timeout(self, timeout: Duration) -> Self
Sets the timeout duration for UDP tracker requests.
Sourcepub fn build_connect_request(transaction_id: u32) -> [u8; 16]
pub fn build_connect_request(transaction_id: u32) -> [u8; 16]
Build a UDP connect request packet (BEP 15).
Sourcepub fn parse_connect_response(
data: &[u8],
expected_transaction_id: u32,
) -> Result<u64>
pub fn parse_connect_response( data: &[u8], expected_transaction_id: u32, ) -> Result<u64>
Parse a UDP connect response, returning the connection_id.
§Errors
Returns an error if the response is too short, has a wrong transaction ID, or is an error response.
Sourcepub fn build_announce_request(
connection_id: u64,
transaction_id: u32,
req: &AnnounceRequest,
) -> Vec<u8> ⓘ
pub fn build_announce_request( connection_id: u64, transaction_id: u32, req: &AnnounceRequest, ) -> Vec<u8> ⓘ
Build a UDP announce request packet (BEP 15).
Sourcepub fn parse_announce_response(
data: &[u8],
expected_transaction_id: u32,
) -> Result<UdpAnnounceResponse>
pub fn parse_announce_response( data: &[u8], expected_transaction_id: u32, ) -> Result<UdpAnnounceResponse>
Parse a UDP announce response.
§Errors
Returns an error if the response is too short or has a wrong transaction ID.
Sourcepub fn parse_announce_response_v6(
data: &[u8],
expected_transaction_id: u32,
) -> Result<UdpAnnounceResponse>
pub fn parse_announce_response_v6( data: &[u8], expected_transaction_id: u32, ) -> Result<UdpAnnounceResponse>
Parse a UDP announce response where the tracker address is IPv6.
Per BEP 15, the compact peer format matches the address family of the tracker endpoint: 18-byte entries (16 IP + 2 port) for IPv6 trackers.
§Errors
Returns an error on short data, action mismatch, transaction ID mismatch, or malformed compact peer entries.
Sourcepub async fn announce(
&self,
tracker_addr: &str,
req: &AnnounceRequest,
) -> Result<UdpAnnounceResponse>
pub async fn announce( &self, tracker_addr: &str, req: &AnnounceRequest, ) -> Result<UdpAnnounceResponse>
Perform a full UDP announce (connect + announce).
§Errors
Returns an error on DNS resolution failure, socket I/O errors, timeout, or protocol-level errors in the connect/announce exchange.
Sourcepub fn build_scrape_request(
connection_id: u64,
transaction_id: u32,
info_hashes: &[Id20],
) -> Vec<u8> ⓘ
pub fn build_scrape_request( connection_id: u64, transaction_id: u32, info_hashes: &[Id20], ) -> Vec<u8> ⓘ
Build a UDP scrape request packet (BEP 15).
Format: connection_id(8) + action(4, value=2) + transaction_id(4) + info_hash(20)*N
Sourcepub fn parse_scrape_response(
data: &[u8],
expected_transaction_id: u32,
) -> Result<UdpScrapeResponse>
pub fn parse_scrape_response( data: &[u8], expected_transaction_id: u32, ) -> Result<UdpScrapeResponse>
Parse a UDP scrape response.
Format: action(4) + transaction_id(4) + [seeders(4) + completed(4) + leechers(4)]*N
§Errors
Returns an error on short data, action mismatch, transaction ID mismatch, or payload length not divisible by 12.
Trait Implementations§
Source§impl Clone for UdpTracker
impl Clone for UdpTracker
Source§fn clone(&self) -> UdpTracker
fn clone(&self) -> UdpTracker
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more