mod global_context;
mod store;
pub(crate) mod storage;
pub mod spus;
pub mod replica;
pub use self::global_context::GlobalContext;
pub use self::store::Spec;
pub use self::store::LocalStore;
pub use self::store::SpecChange;
pub use self::spus::SpuLocalStore;
pub use self::replica::SharedReplicaLocalStore;
use std::sync::Arc;
use ::fluvio_storage::FileReplica;
use fluvio_socket::SinkPool;
use fluvio_types::SpuId;
use crate::config::SpuConfig;
pub type SharedGlobalContext<S> = Arc<GlobalContext<S>>;
pub type DefaultSharedGlobalContext = SharedGlobalContext<FileReplica>;
pub type SharedSpuSinks = Arc<SinkPool<SpuId>>;
pub type SharedSpuConfig = Arc<SpuConfig>;
pub use event::OffsetUpdateEvent;
mod event {
use dataplane::Offset;
use fluvio_controlplane_metadata::partition::ReplicaKey;
#[derive(Debug, Clone)]
pub struct OffsetUpdateEvent {
pub replica_id: ReplicaKey,
pub leo: Offset,
pub hw: Offset,
}
}
mod broadcast {
pub use tokio::sync::broadcast::Receiver;
pub use tokio::sync::broadcast::Sender;
pub use tokio::sync::broadcast::channel;
pub use tokio::sync::broadcast::RecvError;
#[derive(Debug)]
pub struct Channel<T> {
receiver: Receiver<T>,
sender: Sender<T>,
}
impl<T> Channel<T> {
pub fn new(capacity: usize) -> Self {
let (sender, receiver) = channel(capacity);
Self { receiver, sender }
}
pub fn receiver(&self) -> Receiver<T> {
self.sender.subscribe()
}
pub fn sender(&self) -> Sender<T> {
self.sender.clone()
}
}
}