Add inline markers; simplify ip address conversion in request_from_bytes

This commit is contained in:
Joakim Frostegård 2020-04-08 11:19:03 +02:00
parent 4721fa3109
commit a865f4a1ae
6 changed files with 15 additions and 6 deletions

View file

@ -36,6 +36,7 @@ impl PeerStatus {
/// Determine peer status from announce event and number of bytes left. /// Determine peer status from announce event and number of bytes left.
/// ///
/// Likely, the last branch will be taken most of the time. /// Likely, the last branch will be taken most of the time.
#[inline]
pub fn from_event_and_bytes_left( pub fn from_event_and_bytes_left(
event: AnnounceEvent, event: AnnounceEvent,
bytes_left: NumberOfBytes bytes_left: NumberOfBytes
@ -62,12 +63,14 @@ pub struct Peer {
impl Peer { impl Peer {
#[inline(always)]
pub fn to_response_peer(&self) -> ResponsePeer { pub fn to_response_peer(&self) -> ResponsePeer {
ResponsePeer { ResponsePeer {
ip_address: self.ip_address, ip_address: self.ip_address,
port: self.port port: self.port
} }
} }
#[inline]
pub fn from_announce_and_ip( pub fn from_announce_and_ip(
announce_request: &AnnounceRequest, announce_request: &AnnounceRequest,
ip_address: IpAddr ip_address: IpAddr

View file

@ -214,6 +214,7 @@ pub fn extract_response_peers(
} }
#[inline(always)]
pub fn create_torrent_scrape_statistics( pub fn create_torrent_scrape_statistics(
seeders: i32, seeders: i32,
leechers: i32 leechers: i32

View file

@ -4,9 +4,9 @@
//! ``` //! ```
//! ## Average results over 50 rounds //! ## Average results over 50 rounds
//! //!
//! Connect handler: 2 514 978 requests/second, 397.87 ns/request //! Connect handler: 2 519 969 requests/second, 397.36 ns/request
//! Announce handler: 246 744 requests/second, 4054.58 ns/request //! Announce handler: 270 880 requests/second, 3691.91 ns/request
//! Scrape handler: 499 385 requests/second, 2007.23 ns/request //! Scrape handler: 510 028 requests/second, 1961.18 ns/request
//! ``` //! ```
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};

View file

@ -1,6 +1,7 @@
use crate::types; use crate::types;
#[inline]
pub fn event_from_i32(i: i32) -> types::AnnounceEvent { pub fn event_from_i32(i: i32) -> types::AnnounceEvent {
match i { match i {
1 => types::AnnounceEvent::Completed, 1 => types::AnnounceEvent::Completed,
@ -11,6 +12,7 @@ pub fn event_from_i32(i: i32) -> types::AnnounceEvent {
} }
#[inline]
pub fn event_to_i32(event: types::AnnounceEvent) -> i32 { pub fn event_to_i32(event: types::AnnounceEvent) -> i32 {
match event { match event {
types::AnnounceEvent::None => 0, types::AnnounceEvent::None => 0,

View file

@ -12,6 +12,7 @@ use super::common::*;
const MAGIC_NUMBER: i64 = 4_497_486_125_440; const MAGIC_NUMBER: i64 = 4_497_486_125_440;
#[inline]
pub fn request_to_bytes( pub fn request_to_bytes(
bytes: &mut impl Write, bytes: &mut impl Write,
request: types::Request request: types::Request
@ -60,6 +61,7 @@ pub fn request_to_bytes(
} }
#[inline]
pub fn request_from_bytes( pub fn request_from_bytes(
bytes: &[u8], bytes: &[u8],
max_scrape_torrents: u8, max_scrape_torrents: u8,
@ -110,9 +112,8 @@ pub fn request_from_bytes(
let opt_ip = if ip == [0; 4] { let opt_ip = if ip == [0; 4] {
None None
} } else {
else { Some(Ipv4Addr::from(ip))
Some(Ipv4Addr::new(ip[0], ip[1], ip[2], ip[3]))
}; };
Ok(types::Request::Announce(types::AnnounceRequest { Ok(types::Request::Announce(types::AnnounceRequest {

View file

@ -7,6 +7,7 @@ use std::net::{IpAddr, Ipv6Addr, Ipv4Addr};
use crate::types; use crate::types;
#[inline]
pub fn response_to_bytes( pub fn response_to_bytes(
bytes: &mut impl Write, bytes: &mut impl Write,
response: types::Response, response: types::Response,
@ -78,6 +79,7 @@ pub fn response_to_bytes(
} }
#[inline]
pub fn response_from_bytes( pub fn response_from_bytes(
bytes: &[u8], bytes: &[u8],
ip_version: types::IpVersion, ip_version: types::IpVersion,