zlink_core/
reply.rs

1//! Method reply API.
2
3use serde::{Deserialize, Serialize};
4
5/// A successful method call reply.
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Reply<Params> {
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub(super) parameters: Option<Params>,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub(super) continues: Option<bool>,
12}
13
14impl<Params> Reply<Params> {
15    /// Create a new reply.
16    pub fn new(parameters: Option<Params>) -> Self {
17        Self {
18            parameters,
19            continues: None,
20        }
21    }
22
23    /// Set the continues flag.
24    pub fn set_continues(mut self, continues: Option<bool>) -> Self {
25        self.continues = continues;
26        self
27    }
28
29    /// The parameters of the reply.
30    pub fn parameters(&self) -> Option<&Params> {
31        self.parameters.as_ref()
32    }
33
34    /// Convert the reply into its parameters.
35    pub fn into_parameters(self) -> Option<Params> {
36        self.parameters
37    }
38
39    /// If there are more replies to come.
40    pub fn continues(&self) -> Option<bool> {
41        self.continues
42    }
43}
44
45impl<Params> From<Params> for Reply<Params> {
46    fn from(parameters: Params) -> Self {
47        Self::new(Some(parameters))
48    }
49}
50
51/// A reply result.
52pub type Result<Params, Error> = core::result::Result<Reply<Params>, Error>;