pub enum DnsResolveState {
Init,
Resolving {
query_handle: usize,
start_tsc: TscTimestamp,
},
Resolved {
ip: Ipv4Addr,
},
Failed {
error: DnsError,
},
}Expand description
DNS resolution state machine.
Resolves a hostname to an IPv4 address using smoltcp’s DNS socket.
Variants§
Init
Initial state - not started
Resolving
Waiting for DNS response
Fields
§
start_tsc: TscTimestampWhen query started (for timeout)
Resolved
Resolution complete
Failed
Resolution failed
Implementations§
Source§impl DnsResolveState
impl DnsResolveState
Sourcepub fn start(&mut self, query_handle: usize, now_tsc: u64)
pub fn start(&mut self, query_handle: usize, now_tsc: u64)
Start DNS resolution.
§Arguments
query_handle: Handle returned from smoltcp’sstart_query()now_tsc: Current TSC timestamp
Sourcepub fn step(
&mut self,
dns_result: Result<Option<Ipv4Addr>, ()>,
now_tsc: u64,
timeout_ticks: u64,
) -> StepResult
pub fn step( &mut self, dns_result: Result<Option<Ipv4Addr>, ()>, now_tsc: u64, timeout_ticks: u64, ) -> StepResult
Step the state machine.
§Arguments
dns_result: Result from smoltcp’sget_query_result():Ok(Some(ip)): ResolvedOk(None): Still pendingErr(_): Failed
now_tsc: Current TSC valuetimeout_ticks: DNS timeout in TSC ticks
§Returns
Pending: Still resolvingDone: Resolved, callip()to get resultTimeout: Query timed outFailed: Query failed
Sourcepub fn query_handle(&self) -> Option<usize>
pub fn query_handle(&self) -> Option<usize>
Get query handle (if resolving).
Sourcepub fn is_terminal(&self) -> bool
pub fn is_terminal(&self) -> bool
Check if resolution is complete (success or failure).
Sourcepub fn is_resolved(&self) -> bool
pub fn is_resolved(&self) -> bool
Check if resolution succeeded.
Trait Implementations§
Source§impl Debug for DnsResolveState
impl Debug for DnsResolveState
Auto Trait Implementations§
impl Freeze for DnsResolveState
impl RefUnwindSafe for DnsResolveState
impl Send for DnsResolveState
impl Sync for DnsResolveState
impl Unpin for DnsResolveState
impl UnwindSafe for DnsResolveState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more