|
|
|
@ -232,7 +232,7 @@ struct RaceAsyncCompletion<true> { |
|
|
|
|
|
|
|
|
|
template <typename Derived> |
|
|
|
|
struct FilterCallData { |
|
|
|
|
FilterCallData(Derived* channel) : channel(channel) {} |
|
|
|
|
explicit FilterCallData(Derived* channel) : channel(channel) {} |
|
|
|
|
GPR_NO_UNIQUE_ADDRESS typename Derived::Call call; |
|
|
|
|
GPR_NO_UNIQUE_ADDRESS |
|
|
|
|
typename TypeIfNeeded<Latch<ServerMetadataHandle>, |
|
|
|
@ -296,11 +296,11 @@ inline auto RunCall( |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename Derived> |
|
|
|
|
inline auto RunCall( |
|
|
|
|
ServerMetadataHandle (Derived::Call::*fn)(ClientMetadata& md, |
|
|
|
|
Derived* channel), |
|
|
|
|
CallArgs call_args, NextPromiseFactory next_promise_factory, |
|
|
|
|
FilterCallData<Derived>* call_data) -> ArenaPromise<ServerMetadataHandle> { |
|
|
|
|
inline auto RunCall(ServerMetadataHandle (Derived::Call::*fn)( |
|
|
|
|
ClientMetadata& md, Derived* channel), |
|
|
|
|
CallArgs call_args, NextPromiseFactory next_promise_factory, |
|
|
|
|
FilterCallData<Derived>* call_data) |
|
|
|
|
-> ArenaPromise<ServerMetadataHandle> { |
|
|
|
|
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata); |
|
|
|
|
auto return_md = call_data->call.OnClientInitialMetadata( |
|
|
|
|
*call_args.client_initial_metadata, call_data->channel); |
|
|
|
|