usc 1.20230730.1349

A common lib for unitedservices
Documentation
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))
        }
    };
}