Controladores gRPC
En Sword, un controlador gRPC es un struct anotado con #[controller(kind = Controller::Grpc, ...)] que implementa el trait generado por tonic.
Definir un controlador
rust
use sword::grpc::*;
use sword::prelude::*;
#[controller(kind = Controller::Grpc, service = UserGrpcServiceServer)]
pub struct UsersController;
#[sword::grpc::async_trait]
impl UserGrpcService for UsersController {
async fn list_users(
&self,
req: Request<ListUsersRequest>,
) -> GrpcResult<ListUsersReply> {
tracing::info!("ListUsers grpc method called");
Ok(Response::new(ListUsersReply { users: vec![] }))
}
}El trait (UserGrpcService) es generado por tonic a partir de un archivo .proto y debe ser importado para implementar el controlador.
Registrar en un módulo
rust
use sword::prelude::*;
pub struct UsersModule;
impl Module for UsersModule {
fn register_controllers(controllers: &ControllerRegistry) {
controllers.register::<UsersController>();
}
}
