feat: add grpc server streaming adapter

This commit is contained in:
a.tolmachev
2026-04-06 11:04:10 +03:00
parent bf56494336
commit bd2c6d4f48
10 changed files with 358 additions and 31 deletions
@@ -1,4 +1,5 @@
use base64::{Engine as _, engine::general_purpose::STANDARD};
use futures_util::stream;
use tokio::net::TcpListener;
use tonic::{Request, Response, Status, transport::Server};
@@ -20,6 +21,30 @@ impl echo::echo_service_server::EchoService for EchoServiceImpl {
message: request.into_inner().message,
}))
}
type ServerEchoStream = std::pin::Pin<
Box<dyn futures_util::Stream<Item = Result<echo::EchoResponse, Status>> + Send>,
>;
async fn server_echo(
&self,
request: Request<echo::EchoRequest>,
) -> Result<Response<Self::ServerEchoStream>, Status> {
let message = request.into_inner().message;
let events = vec![
Ok(echo::EchoResponse {
message: format!("{message}-one"),
}),
Ok(echo::EchoResponse {
message: format!("{message}-two"),
}),
Ok(echo::EchoResponse {
message: format!("{message}-three"),
}),
];
Ok(Response::new(Box::pin(stream::iter(events))))
}
}
pub async fn spawn_unary_echo_server() -> String {