Вам необходимо выполнить client_context.TryCancel (), а затем Finish ().В https://github.com/grpc/grpc/blob/master/test/cpp/end2end/end2end_test.cc, ClientCancelsRequestStream есть несколько примеров.Я адаптировал его так, чтобы он был ближе к вашему коду.
RequestType request;
ResponseType response;
ClientContext context;
request.set_message("hello");
auto client_writer = stub_->YourRPC(&context, &response);
client_writer->Write(request);
client_writer->Write(request);
client_context.TryCancel();
Status s = client_writer->Finish();
Если ваша отмена прошла успешно, s.error_code () == grpc :: StatusCode :: CANCELED.
Вот комментарийиз ClientContext :: TryCancel () в client_context.h в репозитории grpc:
/// Send a best-effort out-of-band cancel on the call associated with
/// this client context. The call could be in any stage; e.g., if it is
/// already finished, it may still return success.
///
/// There is no guarantee the call will be cancelled.