#[macro_export]
macro_rules! declare_raft_types_ext {
(
$vis:vis $name:ident :
$( NodeId = $node_id:ty , )?
Node = $node:ty ,
$( Entry = $entry:ty , )?
AppData = $app_data:ty ,
AppDataResponse = $app_resp:ty ,
SnapshotData = $snap:ty ,
$( AsyncRuntime = $runtime:ty , )?
$( Responder = $responder:ty , )?
) => {
#[derive(Debug, Clone, Copy, Default, Eq, PartialEq, Ord, PartialOrd)]
$vis struct $name {}
impl ::openraft::RaftTypeConfig for $name {
type D = $app_data;
type R = $app_resp;
type NodeId = $crate::__first_or_default_node_id!($( $node_id, )?);
type Node = $node;
type Term = u64;
type LeaderId = ::openraft::impls::leader_id_adv::LeaderId<Self::Term, Self::NodeId>;
type Vote = ::openraft::impls::Vote<Self::LeaderId>;
type Entry = $crate::__first_or_default_entry!($( $entry, )?);
type SnapshotData = $snap;
type AsyncRuntime = $crate::__first_or_default_runtime!($( $runtime, )?);
type Responder<T>
= $crate::__first_or_default_responder!($( $responder, )?)
where
T: ::openraft::OptionalSend + 'static;
type Batch<T>
= ::openraft::impls::InlineBatch<T>
where
T: ::openraft::OptionalSend + 'static;
type ErrorSource = ::openraft::impls::BoxedErrorSource;
}
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __first_or_default_node_id {
($t:ty,) => {
$t
};
() => {
u64
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __first_or_default_entry {
($t:ty,) => { $t };
() => {
::openraft::Entry<
<Self::LeaderId as ::openraft::vote::RaftLeaderId>::Committed,
Self::D,
Self::NodeId,
Self::Node,
>
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __first_or_default_runtime {
($t:ty,) => {
$t
};
() => {
::openraft::impls::TokioRuntime
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __first_or_default_responder {
($t:ty,) => { $t };
() => { ::openraft::impls::OneshotResponder<Self, T> };
}