Skip to main content

CoapDtlsServer

Struct CoapDtlsServer 

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

CoAP/DTLS server for EST-coaps (RFC 9148).

Binds a UDP socket, accepts DTLS connections, parses CoAP messages, routes EST operations, and handles block-wise transfer for large payloads.

§Architecture

UDP socket
  └─ DTLS decrypt (per-peer via DtlsContext + DtlsSessionCache)
      └─ CoAP parse (CoapMessage::parse)
          └─ EST routing (CoapEstRouter::route_message)
              └─ Block assembly (BlockAssembler for multi-block requests)
              └─ EST handler callback
              └─ Block disassembly (BlockDisassembler for large responses)
          └─ CoAP encode (CoapMessage::encode)
      └─ DTLS encrypt
  └─ UDP send

Implementations§

Source§

impl CoapDtlsServer

Source

pub async fn bind( listen_addr: &str, cert_pem: &[u8], key_pem: &[u8], ca_pem: &[u8], block_size: u16, max_payload: usize, max_sessions: usize, session_timeout: Duration, ) -> Result<Self, CoapError>

Creates and binds a new CoAP/DTLS server.

§Arguments
  • listen_addr - UDP address to bind (e.g., "0.0.0.0:5684").
  • cert_pem - PEM-encoded server certificate for DTLS.
  • key_pem - PEM-encoded server private key for DTLS.
  • ca_pem - PEM-encoded CA certificate for client cert verification.
  • block_size - CoAP block size in bytes (must be a power of 2, 16..=1024).
  • max_payload - Maximum reassembled payload size in bytes.
  • max_sessions - Maximum concurrent DTLS sessions.
  • session_timeout - DTLS session TTL for resumption.
Source

pub fn local_addr(&self) -> Result<SocketAddr, CoapError>

Returns the local address the server is bound to.

Source

pub async fn run<H: EstHandler>(&self, handler: Arc<H>) -> Result<(), CoapError>

Runs the CoAP/DTLS server main loop.

Receives UDP datagrams, performs DTLS processing, parses CoAP messages, routes to the EST handler, and sends responses. This method runs indefinitely until the provided cancellation token is signalled or an unrecoverable error occurs.

§Arguments
  • handler - EST operation handler that processes enrollment requests.

Auto Trait Implementations§

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more