resolver/resolver.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_H
18 #define GRPC_CORE_LIB_RESOLVER_RESOLVER_H
19 
21 
22 #include <string>
23 
24 #include "absl/status/statusor.h"
25 
27 
33 
35 
36 // Name associated with individual address, if available.
37 #define GRPC_ARG_ADDRESS_NAME "grpc.address_name"
38 
39 namespace grpc_core {
40 
53 class Resolver : public InternallyRefCounted<Resolver> {
54  public:
56  struct Result {
68  // TODO(roth): Before making this a public API, figure out a way to
69  // avoid exposing channel args this way.
70  const grpc_channel_args* args = nullptr;
71 
72  // TODO(roth): Remove everything below once grpc_channel_args is
73  // converted to a copyable and movable C++ object.
74  Result() = default;
75  ~Result();
76  Result(const Result& other);
77  Result(Result&& other) noexcept;
78  Result& operator=(const Result& other);
79  Result& operator=(Result&& other) noexcept;
80  };
81 
84  class ResultHandler {
85  public:
86  virtual ~ResultHandler() {}
87 
89  // TODO(roth): Add a mechanism for the resolver to get back a signal
90  // indicating if the result was accepted by the LB policy, so that it
91  // knows whether to go into backoff to retry to resolution.
92  virtual void ReportResult(Result result) = 0; // NOLINT
93  };
94 
95  // Not copyable nor movable.
96  Resolver(const Resolver&) = delete;
97  Resolver& operator=(const Resolver&) = delete;
98  ~Resolver() override = default;
99 
101  virtual void StartLocked() = 0;
102 
116  virtual void RequestReresolutionLocked() {}
117 
121  virtual void ResetBackoffLocked() {}
122 
123  // Note: This must be invoked while holding the work_serializer.
124  void Orphan() override {
125  ShutdownLocked();
126  Unref();
127  }
128 
129  protected:
130  Resolver();
131 
133  virtual void ShutdownLocked() = 0;
134 };
135 
136 } // namespace grpc_core
137 
138 #endif // GRPC_CORE_LIB_RESOLVER_RESOLVER_H
trace.h
grpc_core::Resolver::Result::args
const grpc_channel_args * args
Definition: resolver/resolver.h:70
_gevent_test_main.result
result
Definition: _gevent_test_main.py:96
grpc_core::Resolver::Orphan
void Orphan() override
Definition: resolver/resolver.h:124
orphanable.h
grpc_core::Resolver::Result::addresses
absl::StatusOr< ServerAddressList > addresses
A list of addresses, or an error.
Definition: resolver/resolver.h:58
grpc_core::Resolver::ShutdownLocked
virtual void ShutdownLocked()=0
Shuts down the resolver.
grpc_core::InternallyRefCounted< Resolver >::Unref
void Unref()
Definition: orphanable.h:100
grpc_core
Definition: call_metric_recorder.h:31
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
grpc_core::Resolver::ResultHandler::ReportResult
virtual void ReportResult(Result result)=0
Reports a result to the channel.
grpc_core::Resolver::Result::service_config
absl::StatusOr< RefCountedPtr< ServiceConfig > > service_config
A service config, or an error.
Definition: resolver/resolver.h:60
grpc_trace_resolver_refcount
grpc_core::DebugOnlyTraceFlag grpc_trace_resolver_refcount
grpc_channel_args
Definition: grpc_types.h:132
grpc_types.h
grpc_core::Resolver
Definition: resolver/resolver.h:53
grpc_core::Resolver::Result
Results returned by the resolver.
Definition: resolver/resolver.h:56
server_address.h
grpc_core::Resolver::operator=
Resolver & operator=(const Resolver &)=delete
grpc_core::InternallyRefCounted
Definition: orphanable.h:73
grpc_core::Resolver::ResultHandler
Definition: resolver/resolver.h:84
grpc_core::Resolver::Result::Result
Result()=default
grpc_core::Resolver::ResultHandler::~ResultHandler
virtual ~ResultHandler()
Definition: resolver/resolver.h:86
grpc_core::TraceFlag
Definition: debug/trace.h:63
grpc_core::Resolver::Resolver
Resolver()
Definition: resolver.cc:37
grpc_core::Resolver::Result::~Result
~Result()
Definition: resolver.cc:46
grpc_core::Resolver::Result::operator=
Result & operator=(const Result &other)
Definition: resolver.cc:63
grpc_core::Resolver::RequestReresolutionLocked
virtual void RequestReresolutionLocked()
Definition: resolver/resolver.h:116
grpc_core::Resolver::Result::resolution_note
std::string resolution_note
Definition: resolver/resolver.h:67
ref_counted_ptr.h
grpc_core::Resolver::ResetBackoffLocked
virtual void ResetBackoffLocked()
Definition: resolver/resolver.h:121
service_config.h
grpc_core::Resolver::StartLocked
virtual void StartLocked()=0
Starts resolving.
absl::StatusOr< ServerAddressList >
grpc_core::Resolver::~Resolver
~Resolver() override=default
port_platform.h


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