mod envelope;
mod error;
mod local;
mod remote;
pub use envelope::{
CommandDispatchEnvelope, CommandDispatchReceipt, COMMAND_DISPATCH_ENVELOPE_VERSION,
};
pub use error::CommandDispatchError;
pub use local::LocalCommandDispatcher;
pub use remote::{
RemoteCommandDispatcher, RemoteDispatchConfig, RemoteTrustMode, APPROVED_REMOTE_DISPATCH_PROFILE,
};
use crate::microsvc::{CommandRequest, CommandResponse};
use async_trait::async_trait;
use std::sync::Arc;
#[async_trait]
pub trait CommandDispatcher: Send + Sync {
async fn dispatch(
&self,
request: &CommandRequest,
) -> Result<CommandResponse, CommandDispatchError>;
fn kind(&self) -> &'static str;
}
pub type SharedCommandDispatcher = Arc<dyn CommandDispatcher>;