hanabi-core 0.1.0-alpha.2

Core library for Hanabi
Documentation
use crate::engines::pubsub::Message;
use crate::util::Consumable;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub enum PubSubResponse {
    Subscribe(PubSubSubscribeResponse),
}

/// Response to a Pub/Sub subscribe request.
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub struct PubSubSubscribeResponse {
    /// The original request identifier.
    request_id: ulid::Ulid,

    /// The message received.
    message: Message,
}

impl PubSubSubscribeResponse {
    pub fn new(request_id: ulid::Ulid, message: Message) -> Self {
        Self {
            request_id,
            message,
        }
    }

    pub fn request_id(&self) -> ulid::Ulid {
        self.request_id
    }
}

impl Consumable<Message> for PubSubSubscribeResponse {
    fn consume(self) -> Message {
        self.message
    }
}