Skip to content

Commit

Permalink
async: Do not use heapless on public API.
Browse files Browse the repository at this point in the history
  • Loading branch information
Dirbaio committed Nov 8, 2023
1 parent 9f90dba commit ddd8175
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 10 deletions.
1 change: 0 additions & 1 deletion embedded-nal-async/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,5 @@ ip_in_core = []

[dependencies]
no-std-net = "0.6"
heapless = "^0.7"
embedded-nal = { version = "0.7.0", path = "../" }
embedded-io-async = { version = "0.6.0" }
24 changes: 18 additions & 6 deletions embedded-nal-async/src/dns.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use crate::IpAddr;
use embedded_nal::AddrType;
use heapless::String;

/// This trait is an extension trait for [`TcpStack`] and [`UdpStack`] for dns
/// resolutions. It does not handle every DNS record type, but is meant as an
Expand All @@ -24,13 +23,22 @@ pub trait Dns {
addr_type: AddrType,
) -> Result<IpAddr, Self::Error>;

/// Resolve the hostname of a host, given its ip address
/// Resolve the hostname of a host, given its ip address.
///
/// The result is at the beginning of `result`, the length is returned.
///
/// If the buffer is too small to hold the domain name, an error should be returned.
///
/// **Note**: A fully qualified domain name (FQDN), has a maximum length of
/// 255 bytes [`rfc1035`]
/// 255 bytes according to [`rfc1035`]. Therefore, you can pass a 255-byte long
/// buffer to guarantee it'll always be large enough.
///
/// [`rfc1035`]: https://tools.ietf.org/html/rfc1035
async fn get_host_by_address(&self, addr: IpAddr) -> Result<String<256>, Self::Error>;
async fn get_host_by_address(
&self,
addr: IpAddr,
result: &mut [u8],
) -> Result<usize, Self::Error>;
}

impl<T: Dns> Dns for &T {
Expand All @@ -44,7 +52,11 @@ impl<T: Dns> Dns for &T {
T::get_host_by_name(self, host, addr_type).await
}

async fn get_host_by_address(&self, addr: IpAddr) -> Result<String<256>, Self::Error> {
T::get_host_by_address(self, addr).await
async fn get_host_by_address(
&self,
addr: IpAddr,
result: &mut [u8],
) -> Result<usize, Self::Error> {
T::get_host_by_address(self, addr, result).await
}
}
3 changes: 0 additions & 3 deletions embedded-nal-async/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@

mod dns;
mod stack;
// Needed by embedded-nal trait implementers who build get_host_by_address results, or by trait
// users who pass the results on.
pub use heapless;

#[cfg(feature = "ip_in_core")]
pub use core::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6};
Expand Down

0 comments on commit ddd8175

Please sign in to comment.