Skip to main content

hanabi_core/protocol/response/
pubsub.rs

1use crate::engines::pubsub::Message;
2use crate::util::Consumable;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
6pub enum PubSubResponse {
7    Subscribe(PubSubSubscribeResponse),
8}
9
10/// Response to a Pub/Sub subscribe request.
11#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
12pub struct PubSubSubscribeResponse {
13    /// The original request identifier.
14    request_id: ulid::Ulid,
15
16    /// The message received.
17    message: Message,
18}
19
20impl PubSubSubscribeResponse {
21    pub fn new(request_id: ulid::Ulid, message: Message) -> Self {
22        Self {
23            request_id,
24            message,
25        }
26    }
27
28    pub fn request_id(&self) -> ulid::Ulid {
29        self.request_id
30    }
31}
32
33impl Consumable<Message> for PubSubSubscribeResponse {
34    fn consume(self) -> Message {
35        self.message
36    }
37}