[V3 Call filter] Add a void $INTERCEPTOR_NAME(const $VALUE_TYPE&) template to support XorFilter V3 conversion.

PiperOrigin-RevId: 684626196
pull/37813/head
Nana Pang 5 months ago committed by Copybara-Service
parent 44bd0528c7
commit 3020e432f9
  1. 22
      src/core/lib/transport/call_filters.h

@ -400,6 +400,28 @@ struct AddOpImpl<FilterType, T,
}
};
// void $INTERCEPTOR_NAME(const $VALUE_TYPE&)
template <typename FilterType, typename T,
void (FilterType::Call::*impl)(const typename T::element_type&)>
struct AddOpImpl<FilterType, T,
void (FilterType::Call::*)(const typename T::element_type&),
impl> {
static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
to.Add(0, 0,
Operator<T>{
channel_data,
call_offset,
[](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
*value);
return ResultOr<T>{std::move(value), nullptr};
},
nullptr,
nullptr,
});
}
};
// void $INTERCEPTOR_NAME($VALUE_TYPE&, FilterType*)
template <typename FilterType, typename T,
void (FilterType::Call::*impl)(typename T::element_type&,

Loading…
Cancel
Save