pub mod file;
pub mod grpc;
pub use file::FileConnector;
pub use grpc::GrpcStreamConnector;
use std::collections::HashMap;
use std::sync::Arc;
use tokio::sync::Mutex;
use tokio::sync::mpsc::Receiver;
#[derive(Debug, Clone)]
pub struct QueuePayload {
pub payload_type: QueuePayloadType,
pub flag_data: String,
pub metadata: Option<HashMap<String, serde_json::Value>>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum QueuePayloadType {
Data,
Error,
}
use crate::error::FlagdError;
#[async_trait::async_trait]
pub trait Connector: Send + Sync {
async fn init(&self) -> Result<(), FlagdError>;
async fn shutdown(&self) -> Result<(), FlagdError>;
fn get_stream(&self) -> Arc<Mutex<Option<Receiver<QueuePayload>>>>;
}