Struct Client

Source
pub struct Client { /* private fields */ }
Expand description

SNTPv4 client.

You must call Client::poll() after Interface::poll() to send and receive SNTP packets.

Implementations§

Source§

impl Client

Source

pub fn new<'a, 'b, 'c>( sockets: &mut SocketSet<'a, 'b, 'c>, rx_buffer: UdpSocketBuffer<'b, 'c>, tx_buffer: UdpSocketBuffer<'b, 'c>, ntp_server: IpAddress, now: Instant, ) -> Self
where 'b: 'c,

Create a new SNTPv4 client performing requests to the specified server.

§Usage
use sntp::Client;
use sntp::net::socket::{SocketSet, UdpSocketBuffer, UdpPacketMetadata};
use sntp::net::time::Instant;
use sntp::net::wire::IpAddress;

let mut sockets_entries: [_; 1] = Default::default();
let mut sockets = SocketSet::new(&mut sockets_entries[..]);

let mut sntp_rx_storage: [u8; 128] = [0; 128];
let mut sntp_rx_metadata: [_; 1] = [UdpPacketMetadata::EMPTY; 1];

let mut sntp_tx_storage: [u8; 128] = [0; 128];
let mut sntp_tx_metadata: [_; 1] = [UdpPacketMetadata::EMPTY; 1];

let sntp_rx_buffer = UdpSocketBuffer::new(
    &mut sntp_rx_metadata[..],
    &mut sntp_rx_storage[..]
);
let sntp_tx_buffer = UdpSocketBuffer::new(
    &mut sntp_tx_metadata[..],
    &mut sntp_tx_storage[..],
);

let mut sntp = Client::new(
    &mut sockets,
    sntp_rx_buffer, sntp_tx_buffer,
    IpAddress::v4(62, 112, 134, 4),
    Instant::from_secs(0),
);
Source

pub fn next_poll(&self, now: Instant) -> Duration

Returns the duration until the next packet request.

Useful for suspending execution after polling.

Source

pub fn poll( &mut self, sockets: &mut SocketSet<'_, '_, '_>, now: Instant, ) -> Result<Option<u32>>

Processes incoming packets, and sends SNTP requests when timeouts expire.

If a valid response is received, the Unix timestamp (ie. seconds since epoch) corresponding to the received NTP timestamp is returned.

Auto Trait Implementations§

§

impl Freeze for Client

§

impl RefUnwindSafe for Client

§

impl Send for Client

§

impl Sync for Client

§

impl Unpin for Client

§

impl UnwindSafe for Client

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.