#[async_trait::async_trait]
pub trait ServiceController: std::fmt::Debug + Send + Sync {
async fn check(
&self,
req: crate::model::CheckRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::CheckResponse>>;
async fn report(
&self,
req: crate::model::ReportRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ReportResponse>>;
}
#[async_trait::async_trait]
impl<T: super::ServiceController> ServiceController for T {
async fn check(
&self,
req: crate::model::CheckRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::CheckResponse>> {
T::check(self, req, options).await
}
async fn report(
&self,
req: crate::model::ReportRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ReportResponse>> {
T::report(self, req, options).await
}
}