handle_containers.h
Go to the documentation of this file.
1 // Copyright 2022 The gRPC Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 #ifndef GRPC_CORE_LIB_EVENT_ENGINE_HANDLE_CONTAINERS_H
15 #define GRPC_CORE_LIB_EVENT_ENGINE_HANDLE_CONTAINERS_H
16 
18 
19 #include <stddef.h>
20 
21 #include <cstdint>
22 #include <utility>
23 
24 #include "absl/container/flat_hash_set.h"
25 #include "absl/hash/hash.h"
26 
28 
29 namespace grpc_event_engine {
30 namespace experimental {
31 
32 // Used for heterogeneous lookup of TaskHandles in abseil containers.
33 template <typename TaskHandle>
35  struct Hash {
36  using HashType = std::pair<const intptr_t, const intptr_t>;
37  using is_transparent = void;
38  size_t operator()(const TaskHandle& handle) const {
39  return absl::Hash<HashType>()({handle.keys[0], handle.keys[1]});
40  }
41  };
42  struct Eq {
43  using is_transparent = void;
44  bool operator()(const TaskHandle& lhs, const TaskHandle& rhs) const {
45  return lhs.keys[0] == rhs.keys[0] && lhs.keys[1] == rhs.keys[1];
46  }
47  };
48 };
49 
52  TaskHandleComparator<
54  TaskHandleComparator<
56 
59  TaskHandleComparator<grpc_event_engine::experimental::EventEngine::
60  DNSResolver::LookupTaskHandle>::Hash,
61  TaskHandleComparator<grpc_event_engine::experimental::EventEngine::
62  DNSResolver::LookupTaskHandle>::Eq>;
63 
64 } // namespace experimental
65 } // namespace grpc_event_engine
66 
67 #endif // GRPC_CORE_LIB_EVENT_ENGINE_HANDLE_CONTAINERS_H
grpc_event_engine::experimental::TaskHandleComparator::Eq::is_transparent
void is_transparent
Definition: handle_containers.h:43
Hash
Hash
Definition: abseil-cpp/absl/container/internal/hash_function_defaults_test.cc:339
absl::hash_internal::Hash
Definition: abseil-cpp/absl/hash/internal/hash.h:1221
grpc_event_engine::experimental::TaskHandleSet
absl::flat_hash_set< grpc_event_engine::experimental::EventEngine::TaskHandle, TaskHandleComparator< grpc_event_engine::experimental::EventEngine::TaskHandle >::Hash, TaskHandleComparator< grpc_event_engine::experimental::EventEngine::TaskHandle >::Eq > TaskHandleSet
Definition: handle_containers.h:55
event_engine.h
grpc_event_engine::experimental::TaskHandleComparator
Definition: handle_containers.h:34
grpc_event_engine::experimental::EventEngine::TaskHandle
Definition: event_engine.h:102
testing::Eq
internal::EqMatcher< T > Eq(T x)
Definition: cares/cares/test/gmock-1.8.0/gmock/gmock.h:8561
absl::flat_hash_set
Definition: abseil-cpp/absl/container/flat_hash_set.h:105
grpc_event_engine::experimental::EventEngine::DNSResolver::LookupTaskHandle
Task handle for DNS Resolution requests.
Definition: event_engine.h:292
grpc_event_engine::experimental::TaskHandleComparator::Hash::HashType
std::pair< const intptr_t, const intptr_t > HashType
Definition: handle_containers.h:36
grpc_event_engine
Definition: endpoint_config.h:24
handle
static csh handle
Definition: test_arm_regression.c:16
grpc_event_engine::experimental::TaskHandleComparator::Eq
Definition: handle_containers.h:42
grpc_event_engine::experimental::TaskHandleComparator::Hash::is_transparent
void is_transparent
Definition: handle_containers.h:37
grpc_event_engine::experimental::TaskHandleComparator::Hash
Definition: handle_containers.h:35
grpc_event_engine::experimental::TaskHandleComparator::Hash::operator()
size_t operator()(const TaskHandle &handle) const
Definition: handle_containers.h:38
port_platform.h
grpc_event_engine::experimental::TaskHandleComparator::Eq::operator()
bool operator()(const TaskHandle &lhs, const TaskHandle &rhs) const
Definition: handle_containers.h:44


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:10