SatCat5
satcat5::coap::SimpleClient Class Reference

Detailed Description

Simplified CoAP client that writes responses to a PacketBuffer.

This CoAP endpoint can send simple requests to a remote server, saving response data to a PacketBuffer for later access.

Definition at line 17 of file coap_client.h.

#include <coap_client.h>

Inheritance diagram for satcat5::coap::SimpleClient:
[legend]
Collaboration diagram for satcat5::coap::SimpleClient:
[legend]

Public Member Functions

u16 msg_id () const
 Message-ID and token for the most recent request.
 
void set_callback (satcat5::io::EventListener *obj)
 Request notifications for incoming responses.
 
satcat5::io::Readableresponse_all ()
 Read full header and contents of the next CoAP response.
 
satcat5::io::Readableresponse_data ()
 Read the contents of the next CoAP response.
 
bool response_discard ()
 Discard the contents of the next CoAP response.
 
satcat5::net::Dispatchiface () const
 Fetch the associated network interface.
 
satcat5::udp::Port srcport () const
 For UDP only, query the local port number.
 
Connectionfind_token (u32 token) const
 Scan connections for a matching proxy-ID. More...
 
satcat5::coap::Connectionget_idle_connection () const
 Get the first idle connection, or null if all are busy.
 
void set_connection (satcat5::coap::Connection *obj)
 Set the preferred connection for outgoing requests. More...
 
void set_filter (const satcat5::net::Type &filter)
 Set network interface filter. More...
 
bool request (satcat5::coap::Code code, const char *uri, const char *data, u16 fmt=satcat5::coap::FORMAT_TEXT)
 Create and send a CoAP request, with optional data. More...
 
bool request (satcat5::coap::Code code, const char *uri, satcat5::io::Readable *data=0, u16 fmt=satcat5::coap::FORMAT_BYTES)
 Create and send a CoAP request, with optional data. More...
 
bool request (satcat5::coap::Code code, const char *uri, satcat5::cbor::CborWriter &cbor)
 Create and send a CoAP request, with optional data. More...
 

Protected Member Functions

 SimpleClient (satcat5::net::Dispatch *iface)
 Constructor attaches to a network interface. More...
 
void coap_response (satcat5::coap::Connection *obj, satcat5::coap::Reader *msg) override
 Save the incoming response message.
 
void frame_rcvd (satcat5::io::LimitedRead &src) override
 Dispatch calls frame_rcvd(...) for each incoming frame with with a matching net::Type value. More...
 
void add_connection (Connection *item)
 
void remove_connection (Connection *item)
 
bool reply (u8 type, const satcat5::coap::ReadHeader *msg)
 
virtual void coap_request (Connection *obj, Reader *msg)
 The Child class overrides these event-handlers: More...
 
virtual void coap_reqwait (Connection *obj, Reader *msg)
 The Child class overrides these event-handlers: More...
 
virtual void coap_separate (Connection *obj, Reader *msg)
 The Child class overrides these event-handlers: More...
 
virtual void coap_error (Connection *obj)
 The Child class overrides these event-handlers: More...
 
virtual void coap_ping (const Reader *msg)
 The Child class overrides these event-handlers: More...
 
virtual void coap_timeout (Connection *obj)
 The Child class overrides these event-handlers: More...
 

Protected Attributes

satcat5::io::PacketBufferStatic< SATCAT5_COAP_BUFFSIZE > m_rcvd
 
u16 m_msg_id
 
satcat5::net::Dispatch *const m_iface
 
satcat5::util::List< satcat5::coap::Connectionm_list
 
satcat5::coap::Connectionm_prefer
 
satcat5::coap::Endpointm_aux_ep
 
satcat5::net::Type m_filter
 Incoming packet filter.
 

Private Attributes

satcat5::net::Protocolm_next
 Linked list of Protocols.
 

Constructor & Destructor Documentation

◆ SimpleClient()

SimpleClient::SimpleClient ( satcat5::net::Dispatch iface)
explicitprotected

Constructor attaches to a network interface.

User may optionally request additional connection buffers.

Definition at line 14 of file coap_client.cc.

Member Function Documentation

◆ coap_error()

virtual void satcat5::coap::Endpoint::coap_error ( Connection obj)
inlineprotectedvirtualinherited

The Child class overrides these event-handlers:

  • coap_request = Received incoming request. The default implementation always responds with "5.01 Not Implemented". The child class SHOULD override this method if it accepts incoming requests. Call open_response() or open_separate() to send the reply.
    See also
    coap::Connection.
  • coap_response = Received the response to a pending request. The default implementation discards the incoming response. The child class SHOULD override this method if it issues requests.
    See also
    Connection::open_request. Multicast queries may result in multiple responses.
  • coap_reqwait = Received duplicate request in "await" state. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_separate = Received separated-response notification. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_error = A pending request failed (i.e., reset or timeout). The child class SHOULD override this method if it issues requests, in order to process errors.
  • coap_ping = Received response to a ping request. The child class MAY override this method if it issues ping requests.
    See also
    Connection::ping.
  • coap_timeout = Benign timeout for a non-confirmable request. For unicast queries, this event indicates no response. For multicast queries, this event marks the end of the waiting period, whether or not request(s) were received.

Reimplemented in satcat5::coap::ProxyServer, and satcat5::coap::EndpointSppFwd.

Definition at line 106 of file coap_endpoint.h.

◆ coap_ping()

virtual void satcat5::coap::Endpoint::coap_ping ( const Reader msg)
inlineprotectedvirtualinherited

The Child class overrides these event-handlers:

  • coap_request = Received incoming request. The default implementation always responds with "5.01 Not Implemented". The child class SHOULD override this method if it accepts incoming requests. Call open_response() or open_separate() to send the reply.
    See also
    coap::Connection.
  • coap_response = Received the response to a pending request. The default implementation discards the incoming response. The child class SHOULD override this method if it issues requests.
    See also
    Connection::open_request. Multicast queries may result in multiple responses.
  • coap_reqwait = Received duplicate request in "await" state. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_separate = Received separated-response notification. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_error = A pending request failed (i.e., reset or timeout). The child class SHOULD override this method if it issues requests, in order to process errors.
  • coap_ping = Received response to a ping request. The child class MAY override this method if it issues ping requests.
    See also
    Connection::ping.
  • coap_timeout = Benign timeout for a non-confirmable request. For unicast queries, this event indicates no response. For multicast queries, this event marks the end of the waiting period, whether or not request(s) were received.

Reimplemented in satcat5::coap::EndpointSppFwd.

Definition at line 107 of file coap_endpoint.h.

◆ coap_request()

virtual void satcat5::coap::Endpoint::coap_request ( Connection obj,
Reader msg 
)
inlineprotectedvirtualinherited

The Child class overrides these event-handlers:

  • coap_request = Received incoming request. The default implementation always responds with "5.01 Not Implemented". The child class SHOULD override this method if it accepts incoming requests. Call open_response() or open_separate() to send the reply.
    See also
    coap::Connection.
  • coap_response = Received the response to a pending request. The default implementation discards the incoming response. The child class SHOULD override this method if it issues requests.
    See also
    Connection::open_request. Multicast queries may result in multiple responses.
  • coap_reqwait = Received duplicate request in "await" state. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_separate = Received separated-response notification. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_error = A pending request failed (i.e., reset or timeout). The child class SHOULD override this method if it issues requests, in order to process errors.
  • coap_ping = Received response to a ping request. The child class MAY override this method if it issues ping requests.
    See also
    Connection::ping.
  • coap_timeout = Benign timeout for a non-confirmable request. For unicast queries, this event indicates no response. For multicast queries, this event marks the end of the waiting period, whether or not request(s) were received.

Reimplemented in satcat5::coap::ResourceServer, and satcat5::coap::EndpointSppFwd.

Definition at line 101 of file coap_endpoint.h.

◆ coap_reqwait()

virtual void satcat5::coap::Endpoint::coap_reqwait ( Connection obj,
Reader msg 
)
inlineprotectedvirtualinherited

The Child class overrides these event-handlers:

  • coap_request = Received incoming request. The default implementation always responds with "5.01 Not Implemented". The child class SHOULD override this method if it accepts incoming requests. Call open_response() or open_separate() to send the reply.
    See also
    coap::Connection.
  • coap_response = Received the response to a pending request. The default implementation discards the incoming response. The child class SHOULD override this method if it issues requests.
    See also
    Connection::open_request. Multicast queries may result in multiple responses.
  • coap_reqwait = Received duplicate request in "await" state. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_separate = Received separated-response notification. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_error = A pending request failed (i.e., reset or timeout). The child class SHOULD override this method if it issues requests, in order to process errors.
  • coap_ping = Received response to a ping request. The child class MAY override this method if it issues ping requests.
    See also
    Connection::ping.
  • coap_timeout = Benign timeout for a non-confirmable request. For unicast queries, this event indicates no response. For multicast queries, this event marks the end of the waiting period, whether or not request(s) were received.

Reimplemented in satcat5::coap::ProxyServer.

Definition at line 104 of file coap_endpoint.h.

◆ coap_separate()

virtual void satcat5::coap::Endpoint::coap_separate ( Connection obj,
Reader msg 
)
inlineprotectedvirtualinherited

The Child class overrides these event-handlers:

  • coap_request = Received incoming request. The default implementation always responds with "5.01 Not Implemented". The child class SHOULD override this method if it accepts incoming requests. Call open_response() or open_separate() to send the reply.
    See also
    coap::Connection.
  • coap_response = Received the response to a pending request. The default implementation discards the incoming response. The child class SHOULD override this method if it issues requests.
    See also
    Connection::open_request. Multicast queries may result in multiple responses.
  • coap_reqwait = Received duplicate request in "await" state. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_separate = Received separated-response notification. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_error = A pending request failed (i.e., reset or timeout). The child class SHOULD override this method if it issues requests, in order to process errors.
  • coap_ping = Received response to a ping request. The child class MAY override this method if it issues ping requests.
    See also
    Connection::ping.
  • coap_timeout = Benign timeout for a non-confirmable request. For unicast queries, this event indicates no response. For multicast queries, this event marks the end of the waiting period, whether or not request(s) were received.

Reimplemented in satcat5::coap::ProxyServer.

Definition at line 105 of file coap_endpoint.h.

◆ coap_timeout()

virtual void satcat5::coap::Endpoint::coap_timeout ( Connection obj)
inlineprotectedvirtualinherited

The Child class overrides these event-handlers:

  • coap_request = Received incoming request. The default implementation always responds with "5.01 Not Implemented". The child class SHOULD override this method if it accepts incoming requests. Call open_response() or open_separate() to send the reply.
    See also
    coap::Connection.
  • coap_response = Received the response to a pending request. The default implementation discards the incoming response. The child class SHOULD override this method if it issues requests.
    See also
    Connection::open_request. Multicast queries may result in multiple responses.
  • coap_reqwait = Received duplicate request in "await" state. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_separate = Received separated-response notification. Child classes that require special event handling, such as reverse-proxies, MAY override this method as needed.
  • coap_error = A pending request failed (i.e., reset or timeout). The child class SHOULD override this method if it issues requests, in order to process errors.
  • coap_ping = Received response to a ping request. The child class MAY override this method if it issues ping requests.
    See also
    Connection::ping.
  • coap_timeout = Benign timeout for a non-confirmable request. For unicast queries, this event indicates no response. For multicast queries, this event marks the end of the waiting period, whether or not request(s) were received.

Definition at line 108 of file coap_endpoint.h.

◆ find_token()

Connection * Endpoint::find_token ( u32  token) const
inherited

Scan connections for a matching proxy-ID.

See also
coap::ProxyServer.

Definition at line 40 of file coap_endpoint.cc.

◆ frame_rcvd()

void Endpoint::frame_rcvd ( satcat5::io::LimitedRead src)
overrideprotectedvirtualinherited

Dispatch calls frame_rcvd(...) for each incoming frame with with a matching net::Type value.

The child class SHOULD read the frame contents from the provided "src" object, which is only valid until the function returns.

To send a reply:

  • Call m_iface->open_reply() to obtain a Writable object. (This also writes out any applicable frame headers.)
  • Write frame contents, then call write_finalize().

The child class MUST override this method.

Implements satcat5::net::Protocol.

Definition at line 56 of file coap_endpoint.cc.

◆ request() [1/3]

bool SimpleClient::request ( satcat5::coap::Code  code,
const char *  uri,
const char *  data,
u16  fmt = satcat5::coap::FORMAT_TEXT 
)

Create and send a CoAP request, with optional data.

Various options are provided for generating message contents.

Definition at line 45 of file coap_client.cc.

◆ request() [2/3]

bool SimpleClient::request ( satcat5::coap::Code  code,
const char *  uri,
satcat5::cbor::CborWriter cbor 
)

Create and send a CoAP request, with optional data.

Various options are provided for generating message contents.

Definition at line 52 of file coap_client.cc.

◆ request() [3/3]

bool SimpleClient::request ( satcat5::coap::Code  code,
const char *  uri,
satcat5::io::Readable data = 0,
u16  fmt = satcat5::coap::FORMAT_BYTES 
)

Create and send a CoAP request, with optional data.

Various options are provided for generating message contents.

Definition at line 22 of file coap_client.cc.

◆ set_connection()

void satcat5::coap::Endpoint::set_connection ( satcat5::coap::Connection obj)
inlineinherited

Set the preferred connection for outgoing requests.

Usually called indirectly through ManageSpp or ManageUdp.

Definition at line 58 of file coap_endpoint.h.

◆ set_filter()

void satcat5::coap::Endpoint::set_filter ( const satcat5::net::Type filter)
inlineinherited

Set network interface filter.

Usually called indirectly through ManageSpp or ManageUdp.

Definition at line 63 of file coap_endpoint.h.


The documentation for this class was generated from the following files: