5
5
#include < viam/sdk/common/private/utils.hpp>
6
6
#include < viam/sdk/common/proto_value.hpp>
7
7
8
- namespace grpc {
9
-
10
- class Status ;
11
-
12
- } // namespace grpc
13
-
14
8
namespace viam {
15
9
namespace sdk {
16
10
17
11
namespace client_helper_details {
18
12
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 ;
20
17
21
18
} // namespace client_helper_details
22
19
@@ -62,7 +59,7 @@ template <typename ClientType,
62
59
class ClientHelper {
63
60
static void default_rsc_ (RequestType&) {}
64
61
static void default_rhc_ (const ResponseType&) {}
65
- static void default_ehc_ (const ::grpc::Status& status) {
62
+ static void default_ehc_ (const ::grpc::Status* status) {
66
63
throw GRPCException (status);
67
64
}
68
65
@@ -111,8 +108,8 @@ class ClientHelper {
111
108
const_cast <const ResponseType&>(response_));
112
109
}
113
110
114
- std::forward<ErrorHandlerCallable>(ehc)(result);
115
- client_helper_details::errorHandlerReturnedUnexpectedly (result);
111
+ std::forward<ErrorHandlerCallable>(ehc)(& result);
112
+ client_helper_details::errorHandlerReturnedUnexpectedly (& result);
116
113
}
117
114
118
115
// A version of invoke for gRPC calls returning `(stream ResponseType)`.
@@ -138,13 +135,13 @@ class ClientHelper {
138
135
139
136
const auto result = reader->Finish ();
140
137
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 ()) )) {
143
140
return ;
144
141
}
145
142
146
- std::forward<ErrorHandlerCallable>(ehc)(result);
147
- client_helper_details::errorHandlerReturnedUnexpectedly (result);
143
+ std::forward<ErrorHandlerCallable>(ehc)(& result);
144
+ client_helper_details::errorHandlerReturnedUnexpectedly (& result);
148
145
}
149
146
150
147
private:
0 commit comments