end-snippet
| 73 | |
| 74 | // end-snippet |
| 75 | auto handle_server_streaming_request(agrpc::GrpcContext& grpc_context, example::v1::Example::AsyncService& service) |
| 76 | { |
| 77 | return agrpc::register_sender_rpc_handler<ServerStreamingRPC>( |
| 78 | grpc_context, service, |
| 79 | [&](ServerStreamingRPC& rpc, const ServerStreamingRPC::Request& request) -> unifex::task<void> |
| 80 | { |
| 81 | for (google::protobuf::int32 i = 0; i < request.integer(); ++i) |
| 82 | { |
| 83 | example::v1::Response response; |
| 84 | response.set_integer(i); |
| 85 | if (!co_await rpc.write(response)) |
| 86 | { |
| 87 | // The client hung up. |
| 88 | co_return; |
| 89 | } |
| 90 | } |
| 91 | co_await rpc.finish(grpc::Status::OK); |
| 92 | }); |
| 93 | } |
| 94 | // --------------------------------------------------- |
| 95 | // |
| 96 |