use engula_apis::*;
use engula_supervisor::Supervisor;
use tonic::{Request, Response, Status};
use crate::{apis::*, Universe};
#[derive(Clone)]
pub struct Server {
uv: Universe,
}
impl Server {
pub fn new(supervisor: Supervisor) -> Self {
Self {
uv: Universe::new(supervisor),
}
}
pub fn into_service(self) -> cooperator_server::CooperatorServer<Self> {
cooperator_server::CooperatorServer::new(self)
}
}
#[tonic::async_trait]
impl cooperator_server::Cooperator for Server {
async fn txn(&self, req: Request<TxnRequest>) -> Result<Response<TxnResponse>, Status> {
let req = req.into_inner();
let res = self.uv.execute(req).await?;
Ok(Response::new(res))
}
}