hanabi_core/protocol/request/
pubsub.rs1use crate::engines::pubsub::Message;
2use crate::util::Consumable;
3
4#[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Serialize, serde::Deserialize)]
6pub enum PubSubRequest {
7 Publish(PubSubPublishRequest),
8 Subscribe(PubSubSubscribeRequest),
9}
10
11#[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Serialize, serde::Deserialize)]
13pub struct PubSubPublishRequest {
14 id: ulid::Ulid,
15 message: Message,
16}
17
18impl PubSubPublishRequest {
19 pub fn new(message: Message) -> Self {
20 Self {
21 id: ulid::Ulid::new(),
22 message,
23 }
24 }
25
26 pub fn id(&self) -> ulid::Ulid {
27 self.id
28 }
29}
30
31impl Consumable<Message> for PubSubPublishRequest {
32 fn consume(self) -> Message {
33 self.message
34 }
35}
36
37#[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Serialize, serde::Deserialize)]
39pub struct PubSubSubscribeRequest {
40 id: ulid::Ulid,
41 topic: String,
42}
43
44impl PubSubSubscribeRequest {
45 pub fn new(topic: String) -> Self {
46 Self {
47 id: ulid::Ulid::new(),
48 topic,
49 }
50 }
51
52 pub fn id(&self) -> ulid::Ulid {
53 self.id
54 }
55}
56
57impl Consumable<String> for PubSubSubscribeRequest {
58 fn consume(self) -> String {
59 self.topic
60 }
61}