use crate::role::context::service::ServiceContext;
use crate::role::result::service::ServiceResult;
use std::future::Future;
pub trait ServiceRole: Send + 'static {
fn init<'a>(
&'a mut self,
ctx: &'a ServiceContext,
) -> impl Future<Output = ServiceResult<()>> + Send + 'a {
async move {
let _ = ctx;
Ok(())
}
}
fn run<'a>(
&'a mut self,
ctx: &'a ServiceContext,
) -> impl Future<Output = ServiceResult<()>> + Send + 'a;
fn shutdown<'a>(
&'a mut self,
ctx: &'a ServiceContext,
) -> impl Future<Output = ServiceResult<()>> + Send + 'a {
async move {
let _ = ctx;
Ok(())
}
}
}