Implement to native endian functions as a trait for u32/u64
This commit is contained in:
1 parent
6119408e1f
commit
62bd482acb
3 files changed
+31
-13
No files matched your search
@@ -0,0 +1,27 @@
|
|||||||
|
pub trait ToNativeEndian {
|
||||||
|
fn to_ne(self) -> Self;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToNativeEndian for u32 {
|
||||||
|
#[cfg(target_endian = "big")]
|
||||||
|
fn to_ne(self) -> Self {
|
||||||
|
self.to_be()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_endian = "little")]
|
||||||
|
fn to_ne(self) -> Self {
|
||||||
|
self.to_le()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToNativeEndian for u64 {
|
||||||
|
#[cfg(target_endian = "big")]
|
||||||
|
fn to_ne(self) -> Self {
|
||||||
|
self.to_be()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_endian = "little")]
|
||||||
|
fn to_ne(self) -> Self {
|
||||||
|
self.to_le()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
use std::net::IpAddr;
|
use std::net::IpAddr;
|
||||||
|
|
||||||
|
use crate::endian::ToNativeEndian;
|
||||||
use crate::pinger::{PingError, PingListener, PingReply, PingSender};
|
use crate::pinger::{PingError, PingListener, PingReply, PingSender};
|
||||||
use crate::utils::Utils;
|
use crate::utils::Utils;
|
||||||
use etherparse::icmpv4::TimestampMessage;
|
use etherparse::icmpv4::TimestampMessage;
|
||||||
@@ -30,9 +31,9 @@ impl PingListener for PingerICMPTimestampListener {
|
|||||||
let time_since_midnight: i64 = (time_now.tv_sec() as i64 % 86400 * 1000)
|
let time_since_midnight: i64 = (time_now.tv_sec() as i64 % 86400 * 1000)
|
||||||
+ (time_now.tv_nsec() as i64 / 1000000);
|
+ (time_now.tv_nsec() as i64 / 1000000);
|
||||||
|
|
||||||
let originate_timestamp = Utils::to_ne(reply.originate_timestamp);
|
let originate_timestamp = reply.originate_timestamp.to_ne();
|
||||||
let receive_timestamp = Utils::to_ne(reply.receive_timestamp);
|
let receive_timestamp = reply.receive_timestamp.to_ne();
|
||||||
let transmit_timestamp = Utils::to_ne(reply.transmit_timestamp);
|
let transmit_timestamp = reply.transmit_timestamp.to_ne();
|
||||||
|
|
||||||
let rtt: i64 = time_since_midnight - originate_timestamp as i64;
|
let rtt: i64 = time_since_midnight - originate_timestamp as i64;
|
||||||
let dl_time: i64 = time_since_midnight - transmit_timestamp as i64;
|
let dl_time: i64 = time_since_midnight - transmit_timestamp as i64;
|
||||||
|
|||||||
@@ -21,14 +21,4 @@ impl Utils {
|
|||||||
let time = clock_gettime(ClockId::CLOCK_MONOTONIC)?;
|
let time = clock_gettime(ClockId::CLOCK_MONOTONIC)?;
|
||||||
Ok((time.tv_sec() as f64, time.tv_nsec() as f64))
|
Ok((time.tv_sec() as f64, time.tv_nsec() as f64))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_endian = "big")]
|
|
||||||
pub fn to_ne(val: u64) -> u64 {
|
|
||||||
val.to_be()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(target_endian = "little")]
|
|
||||||
pub fn to_ne(val: u32) -> u32 {
|
|
||||||
val.to_le()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user