use crate::codec::BaseCodec;
use crate::handler::handler::{TaskContext, TaskInfo, TaskRetFutTrait};
use std::future::Future;
pub trait Executor {
#[cfg(feature = "thread-pool")]
fn execute_normal<Rust2DartCodec, TaskFn>(&self, task_info: TaskInfo, task: TaskFn)
where
TaskFn: FnOnce(TaskContext) -> Result<Rust2DartCodec::Message, Rust2DartCodec::Message>
+ Send
+ 'static,
Rust2DartCodec: BaseCodec;
fn execute_sync<Rust2DartCodec, SyncTaskFn>(
&self,
task_info: TaskInfo,
sync_task: SyncTaskFn,
) -> Rust2DartCodec::Message
where
SyncTaskFn: FnOnce() -> Result<Rust2DartCodec::Message, Rust2DartCodec::Message>,
Rust2DartCodec: BaseCodec;
#[cfg(feature = "rust-async")]
fn execute_async<Rust2DartCodec, TaskFn, TaskRetFut>(&self, task_info: TaskInfo, task: TaskFn)
where
TaskFn: FnOnce(TaskContext) -> TaskRetFut + Send + 'static,
TaskRetFut: Future<Output = Result<Rust2DartCodec::Message, Rust2DartCodec::Message>>
+ TaskRetFutTrait,
Rust2DartCodec: BaseCodec;
}