use tokio::sync::oneshot;
use super::types::{ExecuteFn, ExecuteIfCachedFn, ExecuteMutFn};
use super::{DefaultCommitPolicy, InnerCommitPolicy, TakenData};
use crate::{ShardError, ShardShutdownStats, ShardStats, UpstreamError};
pub(crate) enum InternalMpscMessage {
DoExpeditedExpirationProbe,
}
#[derive(Debug)]
pub(crate) enum InternalJoinSetResult<Key, Data> {
DataLoadResult(Key, Result<Data, UpstreamError>),
DataCommitResult(Key, Result<(), UpstreamError>),
}
pub(super) enum ServiceHandleMessage<Key, Data> {
Execute(Key, ExecuteFn<Data>),
ExecuteIfCached(Key, ExecuteIfCachedFn<Data>),
ExecuteMut(Key, ExecuteMutFn<Data>),
GetStats(oneshot::Sender<ShardStats>),
TakeData(Key, TakeDataSender<Key, Data>),
Shutdown(ShutdownSender),
}
pub(super) type TakeDataSender<Key, Data> = oneshot::Sender<Option<TakenData<Key, Data>>>;
pub(super) type ShutdownSender = oneshot::Sender<ShardShutdownStats>;