resolver_registry.h
Go to the documentation of this file.
1 //
2 // Copyright 2015 gRPC authors.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #ifndef GRPC_CORE_LIB_RESOLVER_RESOLVER_REGISTRY_H
18 #define GRPC_CORE_LIB_RESOLVER_RESOLVER_REGISTRY_H
19 
21 
22 #include <map>
23 #include <memory>
24 #include <string>
25 #include <utility>
26 
27 #include "absl/strings/string_view.h"
28 
30 
36 
37 namespace grpc_core {
38 
40  private:
41  // Forward declaration needed to use this in Builder.
42  struct State {
43  std::map<absl::string_view, std::unique_ptr<ResolverFactory>> factories;
45  };
46 
47  public:
51  class Builder {
52  public:
53  Builder();
54 
57 
60  void RegisterResolverFactory(std::unique_ptr<ResolverFactory> factory);
61 
63  bool HasResolverFactory(absl::string_view scheme) const;
64 
66  void Reset();
67 
69 
70  private:
72  };
73 
74  ResolverRegistry(const ResolverRegistry&) = delete;
77  ResolverRegistry& operator=(ResolverRegistry&&) noexcept;
78 
81 
97  grpc_pollset_set* pollset_set,
98  std::shared_ptr<WorkSerializer> work_serializer,
99  std::unique_ptr<Resolver::ResultHandler> result_handler) const;
100 
103 
106 
110 
111  private:
113 
114  // TODO(ctiller): fix callers such that the canonical_target argument can be
115  // removed, and replaced with uri.ToString().
117  std::string* canonical_target) const;
118 
120 };
121 
122 } // namespace grpc_core
123 
124 #endif // GRPC_CORE_LIB_RESOLVER_RESOLVER_REGISTRY_H
grpc_core::ResolverRegistry::Builder::HasResolverFactory
bool HasResolverFactory(absl::string_view scheme) const
Returns true iff scheme already has a registered factory.
Definition: resolver_registry.cc:46
grpc_core::ResolverRegistry::LookupResolverFactory
ResolverFactory * LookupResolverFactory(absl::string_view scheme) const
Definition: resolver_registry.cc:108
orphanable.h
grpc_core::ResolverRegistry::State
Definition: resolver_registry.h:42
const
#define const
Definition: bloaty/third_party/zlib/zconf.h:230
grpc_core
Definition: call_metric_recorder.h:31
grpc_core::WorkSerializer
Definition: work_serializer.h:51
performance.loadtest_config.default_prefix
str default_prefix()
Definition: loadtest_config.py:53
grpc_pollset_set
struct grpc_pollset_set grpc_pollset_set
Definition: iomgr_fwd.h:23
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
grpc_core::URI
Definition: uri_parser.h:31
grpc_core::ResolverRegistry::Builder::Builder
Builder()
Definition: resolver_registry.cc:34
ResultHandler
Definition: dns_resolver_cooldown_test.cc:202
grpc_core::ResolverRegistry::State::default_prefix
std::string default_prefix
Definition: resolver_registry.h:44
grpc_channel_args
Definition: grpc_types.h:132
grpc_types.h
resolver_factory.h
grpc_core::ResolverRegistry::AddDefaultPrefixIfNeeded
std::string AddDefaultPrefixIfNeeded(absl::string_view target) const
Returns target with the default prefix prepended, if needed.
Definition: resolver_registry.cc:100
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
absl::move
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
Definition: abseil-cpp/absl/utility/utility.h:221
grpc_core::ResolverRegistry::ResolverRegistry
ResolverRegistry(const ResolverRegistry &)=delete
grpc_core::ResolverRegistry::state_
State state_
Definition: resolver_registry.h:119
grpc_core::ResolverRegistry::FindResolverFactory
ResolverFactory * FindResolverFactory(absl::string_view target, URI *uri, std::string *canonical_target) const
Definition: resolver_registry.cc:119
grpc_core::Resolver
Definition: resolver/resolver.h:53
grpc_core::ResolverRegistry::State::factories
std::map< absl::string_view, std::unique_ptr< ResolverFactory > > factories
Definition: resolver_registry.h:43
grpc_core::ResolverRegistry::Builder::state_
ResolverRegistry::State state_
Definition: resolver_registry.h:71
grpc_core::ResolverRegistry::GetDefaultAuthority
std::string GetDefaultAuthority(absl::string_view target) const
Returns the default authority to pass from a client for target.
Definition: resolver_registry.cc:90
resolver.h
grpc_core::ResolverRegistry::Builder
Definition: resolver_registry.h:51
grpc_core::ResolverRegistry::CreateResolver
OrphanablePtr< Resolver > CreateResolver(absl::string_view target, const grpc_channel_args *args, grpc_pollset_set *pollset_set, std::shared_ptr< WorkSerializer > work_serializer, std::unique_ptr< Resolver::ResultHandler > result_handler) const
Definition: resolver_registry.cc:73
grpc_core::ResolverRegistry::Builder::SetDefaultPrefix
void SetDefaultPrefix(std::string default_prefix)
Sets the default URI prefix to default_prefix.
Definition: resolver_registry.cc:36
grpc_core::ResolverRegistry
Definition: resolver_registry.h:39
grpc_core::ResolverRegistry::IsValidTarget
bool IsValidTarget(absl::string_view target) const
Checks whether the user input target is valid to create a resolver.
Definition: resolver_registry.cc:64
grpc_core::OrphanablePtr
std::unique_ptr< T, Deleter > OrphanablePtr
Definition: orphanable.h:64
std
Definition: grpcpp/impl/codegen/async_unary_call.h:407
state
Definition: bloaty/third_party/zlib/contrib/blast/blast.c:41
grpc_core::ResolverRegistry::Builder::Reset
void Reset()
Wipe everything in the registry and reset to empty.
Definition: resolver_registry.cc:51
grpc_core::ResolverRegistry::operator=
ResolverRegistry & operator=(const ResolverRegistry &)=delete
grpc_core::ResolverRegistry::Builder::Build
ResolverRegistry Build()
Definition: resolver_registry.cc:56
absl
Definition: abseil-cpp/absl/algorithm/algorithm.h:31
uri_parser.h
iomgr_fwd.h
grpc_core::ResolverFactory
Definition: resolver_factory.h:54
setup.target
target
Definition: third_party/bloaty/third_party/protobuf/python/setup.py:179
grpc_core::ResolverRegistry::Builder::RegisterResolverFactory
void RegisterResolverFactory(std::unique_ptr< ResolverFactory > factory)
Definition: resolver_registry.cc:40
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:11