pub struct Message<EM: MessageBuffer> { /* private fields */ }Expand description
A CoAP message that resides in contiguous readable memory.
This implementation does not attempt to do any early validation. On encoding errors discovered
at runtime, it simply emits the critical-and-not-safe-to-forward CoAP option 65535
(OPTION_INVALID), which to the indication indicates that something went wrong
Message is covariant over its lifetime because it only reads from there, effectively
fulfilling the expectations of LifetimesMatterLittle. That
property is currently not exposed.
§Implementation details
When used with coap_message::helpers::RefWithStaticType, it always uses Message<EMS>
where EMS is the type inside the LifetimesMatterLittle of the EM::static_variant()
result. This is needed to run Self::downcast_from, and restores the lifetime based on the
given impl Trait reference’s lifetime using its covariance property.
Implementations§
Source§impl<'a> Message<SliceBuffer<'a>>
impl<'a> Message<SliceBuffer<'a>>
Sourcepub fn new_from_slice(code: u8, options_and_payload: &'a [u8]) -> Self
pub fn new_from_slice(code: u8, options_and_payload: &'a [u8]) -> Self
Creates a message that is parsed from a slice.
This is a short-cut for creating a SliceBuffer and passing it to Self::new().
Source§impl<EM: MessageBuffer> Message<EM>
impl<EM: MessageBuffer> Message<EM>
Sourcepub fn new(inner: EM) -> Self
pub fn new(inner: EM) -> Self
Creates a new instance backed by an encoded message buffer.
Decoding assumes that the full tail of the buffer contains options and payload.
Sourcepub fn new_until(inner: EM, length: usize) -> Self
pub fn new_until(inner: EM, length: usize) -> Self
Creates a new instance backed by an encoded message buffer.
Decoding assumes that the first length bytes contain options and payload. (The buffer
having the option to be longer is mostly useful when it is also an
MessageBufferMut, and might later get
turned .into_mutable()).
pub fn downcast_from<M: ReadableMessage>(generic: &M) -> Option<&Self>
downcast only.Sourcepub fn into_mutable(self) -> Result<MessageMut<EM>, ParsingError>where
EM: MessageBufferMut,
pub fn into_mutable(self) -> Result<MessageMut<EM>, ParsingError>where
EM: MessageBufferMut,
Converts the message into a mutable writable message.
This can be useful to reuse a buffer that has been passed to the application, e.g. for in-place decryption or to shove around indefinite-length CBOR encoding inside payloads.
§Errors
… are only raised if the message contains parsing errors (for a mutable message is stricter in that regard).
Trait Implementations§
Source§impl<EM: MessageBuffer> AsRef<EM> for Message<EM>
When the inner item stores more than just the code and encoded options, this can be used to
gain read-only access to any additional data.
impl<EM: MessageBuffer> AsRef<EM> for Message<EM>
When the inner item stores more than just the code and encoded options, this can be used to gain read-only access to any additional data.
Note that no matter whether access is shared or exclusive, the MessageBuffer must uphold
its promise to always return the same content.
Source§impl<EM: MessageBuffer> ReadableMessage for Message<EM>
impl<EM: MessageBuffer> ReadableMessage for Message<EM>
Source§type Code = u8
type Code = u8
Self::code()Source§type MessageOption<'a> = MessageOption<'a>
where
Self: 'a
type MessageOption<'a> = MessageOption<'a> where Self: 'a
Source§type OptionsIter<'a> = OptionsIter<'a>
where
Self: 'a
type OptionsIter<'a> = OptionsIter<'a> where Self: 'a
Self::options()Source§fn options(&self) -> OptionsIter<'_> ⓘ
fn options(&self) -> OptionsIter<'_> ⓘ
Source§fn with_static_type_annotation(&self) -> Option<RefWithStaticType<'_, Self>>
fn with_static_type_annotation(&self) -> Option<RefWithStaticType<'_, Self>>
impl<EM: MessageBuffer> WithSortedOptions for Message<EM>
Auto Trait Implementations§
impl<EM> !Freeze for Message<EM>
impl<EM> !RefUnwindSafe for Message<EM>
impl<EM> !Sync for Message<EM>
impl<EM> Send for Message<EM>where
EM: Send,
impl<EM> Unpin for Message<EM>where
EM: Unpin,
impl<EM> UnsafeUnpin for Message<EM>where
EM: UnsafeUnpin,
impl<EM> UnwindSafe for Message<EM>where
EM: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<M> ShowMessageExt for Mwhere
M: ReadableMessage,
impl<M> ShowMessageExt for Mwhere
M: ReadableMessage,
Source§fn show(&self) -> ShowMessage<'_, Self>
fn show(&self) -> ShowMessage<'_, Self>
core::fmt::Debug imlementation, and also provide
[defmt_0_3::Format] if the defmt_0_3 feature is selected. Read more