use std::convert::Infallible;
use tonic::{transport::Server, Request, Response, Status};
use tonic::body::BoxBody;
use tonic::codegen::http::{request, response};
use tonic::codegen::{ Service};
use tonic::server::NamedService;
use tonic::transport::Body;
use tonic::transport::server::Router;
use crate::myerror::MyError;
use async_trait::async_trait;
pub trait IGrpcServer {
fn add_to_server(&self,server: Router) ->Router ;
fn classname(&self) ->String;
}
pub struct CollectorIGrpcServer(pub Box<dyn IGrpcServer>);
inventory::collect!(CollectorIGrpcServer);
#[macro_export]
macro_rules! mygrpcserver {
($a:expr) => {
inventory::submit! {
CollectorIGrpcServer(Box::new($a))
}
};
}
pub trait IDaemonLoop {
fn handle(&self) ->Result<(),MyError>;
fn miniseconds(&self) ->i64;
fn classname(&self) ->String;
}
pub struct CollectorIDaemonLoop(pub Box<dyn IDaemonLoop>);
inventory::collect!(CollectorIDaemonLoop);
#[macro_export]
macro_rules! myloop {
($a:expr) => {
inventory::submit! {
CollectorIDaemonLoop(Box::new($a))
}
};
}
#[async_trait]
pub trait IOnAppready {
async fn handle(&self) ->Result<(),MyError>;
fn classname(&self) ->String;
}
pub struct CollectorIOnAppready(pub Box<dyn IOnAppready>);
inventory::collect!(CollectorIOnAppready);
#[macro_export]
macro_rules! myready {
($a:expr) => {
inventory::submit! {
CollectorIOnAppready(Box::new($a))
}
};
}