hanabi_core/protocol/request/
mod.rs1mod control;
2mod key_value;
3mod pubsub;
4
5pub use control::*;
6pub use key_value::KeyValueRequest;
7pub use pubsub::PubSubRequest;
8
9use crate::protocol::error::ProtocolError;
10use bytes::Bytes;
11use tracing::error;
12
13#[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Serialize, serde::Deserialize)]
15pub enum Request {
16 KeyValue(KeyValueRequest),
18
19 PubSub(PubSubRequest),
21
22 Control(ControlRequest),
24}
25
26impl TryFrom<Request> for Vec<u8> {
27 type Error = ProtocolError;
28
29 fn try_from(value: Request) -> Result<Self, Self::Error> {
30 rmp_serde::to_vec(&value)
31 .inspect_err(|error| error!(?error, "Failed to serialize request"))
32 .map_err(|error| ProtocolError::Serialization(error.to_string()))
33 }
34}
35
36impl TryFrom<Request> for Bytes {
37 type Error = ProtocolError;
38
39 fn try_from(value: Request) -> Result<Self, Self::Error> {
40 rmp_serde::to_vec(&value)
41 .inspect_err(|error| error!(?error, "Failed to serialize request"))
42 .map_err(|error| ProtocolError::Serialization(error.to_string()))
43 .map(Bytes::from)
44 }
45}
46
47impl TryFrom<Vec<u8>> for Request {
48 type Error = ProtocolError;
49
50 fn try_from(value: Vec<u8>) -> Result<Self, Self::Error> {
51 rmp_serde::from_slice(&value)
52 .inspect_err(|error| error!(?error, "Failed to deserialize request"))
53 .map_err(|error| ProtocolError::Serialization(error.to_string()))
54 }
55}
56
57impl TryFrom<&[u8]> for Request {
58 type Error = ProtocolError;
59
60 fn try_from(value: &[u8]) -> Result<Self, Self::Error> {
61 rmp_serde::from_slice(value)
62 .inspect_err(|error| error!(?error, "Failed to deserialize request"))
63 .map_err(|error| ProtocolError::Serialization(error.to_string()))
64 }
65}
66
67impl TryFrom<Bytes> for Request {
68 type Error = ProtocolError;
69
70 fn try_from(value: Bytes) -> Result<Self, Self::Error> {
71 rmp_serde::from_slice(&value)
72 .inspect_err(|error| error!(?error, "Failed to deserialize request"))
73 .map_err(|error| ProtocolError::Serialization(error.to_string()))
74 }
75}