55#include < viam/sdk/common/private/utils.hpp>
66#include < viam/sdk/common/proto_value.hpp>
77
8- namespace grpc {
9-
10- class Status ;
11-
12- } // namespace grpc
13-
148namespace viam {
159namespace sdk {
1610
1711namespace client_helper_details {
1812
19- [[noreturn]] void errorHandlerReturnedUnexpectedly (const ::grpc::Status&) noexcept ;
13+ [[noreturn]] void errorHandlerReturnedUnexpectedly (const ::grpc::Status*) noexcept ;
14+
15+ // Helper function to test equality of status with grpc::StatusCode::CANCELLED.
16+ bool isStatusCancelled (int status) noexcept ;
2017
2118} // namespace client_helper_details
2219
@@ -62,7 +59,7 @@ template <typename ClientType,
6259class ClientHelper {
6360 static void default_rsc_ (RequestType&) {}
6461 static void default_rhc_ (const ResponseType&) {}
65- static void default_ehc_ (const ::grpc::Status& status) {
62+ static void default_ehc_ (const ::grpc::Status* status) {
6663 throw GRPCException (status);
6764 }
6865
@@ -111,8 +108,8 @@ class ClientHelper {
111108 const_cast <const ResponseType&>(response_));
112109 }
113110
114- std::forward<ErrorHandlerCallable>(ehc)(result);
115- client_helper_details::errorHandlerReturnedUnexpectedly (result);
111+ std::forward<ErrorHandlerCallable>(ehc)(& result);
112+ client_helper_details::errorHandlerReturnedUnexpectedly (& result);
116113 }
117114
118115 // A version of invoke for gRPC calls returning `(stream ResponseType)`.
@@ -138,13 +135,13 @@ class ClientHelper {
138135
139136 const auto result = reader->Finish ();
140137
141- if (result.ok () ||
142- (cancelled_by_handler && result.error_code () == ::grpc::StatusCode::CANCELLED )) {
138+ if (result.ok () || (cancelled_by_handler &&
139+ client_helper_details::isStatusCancelled ( result.error_code ()) )) {
143140 return ;
144141 }
145142
146- std::forward<ErrorHandlerCallable>(ehc)(result);
147- client_helper_details::errorHandlerReturnedUnexpectedly (result);
143+ std::forward<ErrorHandlerCallable>(ehc)(& result);
144+ client_helper_details::errorHandlerReturnedUnexpectedly (& result);
148145 }
149146
150147 private:
0 commit comments