mod error;
pub mod static_adapter;
#[cfg(test)]
pub mod test_adapter;
pub use crate::execution::adapter::error::{ExecutionAdapterError, ExecutionOperationError};
use crate::context::ContextId;
use crate::execution::ExecutionRegistry;
use crate::protocol::transaction::TransactionPair;
use crate::scheduler::ExecutionTaskCompletionNotification;
pub trait ExecutionAdapter: Send {
fn start(
&mut self,
execution_registry: Box<dyn ExecutionRegistry>,
) -> Result<(), ExecutionOperationError>;
fn execute(
&self,
transaction_pair: TransactionPair,
context_id: ContextId,
on_done: Box<
dyn Fn(Result<ExecutionTaskCompletionNotification, ExecutionAdapterError>) + Send,
>,
) -> Result<(), ExecutionOperationError>;
fn stop(self: Box<Self>) -> Result<(), ExecutionOperationError>;
}