Stateful wrapper around a Udp-like object (facilitating sending of datagrams).
Allows communication with another Endpoint object.
The Endpoint does not have its own thread of control. Communication
is maintained by regular maintain calls that perform heartbeats, resend lost
packets etc.
This object contains all the configuration information required by the Endpoint
struct. default() will return a new configuration object with default values
which can be directly manipulated before being passed to the Endpoint.
An Endpoint can send payloads of data. However, all messages sent by a single
SetSender object of the endpoint are semantically grouped together into an
unordered set. A new set cannot be defined until the current one is dropped.
Enum that is passed into every send call on an Endpoint that creates and
ships a payload. The enum variant determines what bookkeeping will be performed
to deliver the expected guarantees.
Enum that is checked by the Endpoint to decide what to do in the event the
user creates a new SetSender but the endpoint itself has written-but-unsent
data.