Enum kinode_process_lib::Message
source · pub enum Message {
Request {
source: Address,
expects_response: Option<u64>,
body: Vec<u8>,
metadata: Option<String>,
capabilities: Vec<Capability>,
},
Response {
source: Address,
body: Vec<u8>,
metadata: Option<String>,
context: Option<Vec<u8>>,
capabilities: Vec<Capability>,
},
}Expand description
The basic message type. A message is either a request or a response. Best practice when handling a message is to do this:
- Match on whether it’s a request or a response
- Match on who the message is from (the
source) - Parse and interpret the
body,metadata, and/orcontextbased on who the message is from and what your process expects from them.
Variants§
Implementations§
source§impl Message
impl Message
sourcepub fn blob(&self) -> Option<LazyLoadBlob>
pub fn blob(&self) -> Option<LazyLoadBlob>
Get the blob of a message, if any. This function must be called by the process that received the message before receiving another message! The blob can only be consumed immediately after receiving a message.
sourcepub fn capabilities(&self) -> &Vec<Capability>
pub fn capabilities(&self) -> &Vec<Capability>
Get the capabilities of a message.
sourcepub fn is_request(&self) -> bool
pub fn is_request(&self) -> bool
Check if a message is a request. Returns false if it’s a response.
sourcepub fn is_local(&self, our: &Address) -> bool
pub fn is_local(&self, our: &Address) -> bool
Check if a message was sent by a local process. Returns false if the
source node is not our local node.
sourcepub fn is_process<T>(&self, process: T) -> bool
pub fn is_process<T>(&self, process: T) -> bool
Check the ProcessId of a message source against a given ProcessId or
something that can be checked for equality against a ProcessId.
Trait Implementations§
source§impl<'de> Deserialize<'de> for Message
impl<'de> Deserialize<'de> for Message
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Message
impl RefUnwindSafe for Message
impl Send for Message
impl Sync for Message
impl Unpin for Message
impl UnwindSafe for Message
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more