lb_policy.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_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
18 #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
19 
21 
22 #include <stddef.h>
23 #include <stdint.h>
24 
25 #include <memory>
26 #include <string>
27 #include <type_traits>
28 #include <utility>
29 #include <vector>
30 
31 #include "absl/status/status.h"
32 #include "absl/status/statusor.h"
33 #include "absl/strings/string_view.h"
34 #include "absl/types/optional.h"
35 #include "absl/types/variant.h"
36 
39 
51 
52 namespace grpc_core {
53 
55 
85 
93 // TODO(roth): Once we move to EventManager-based polling, remove the
94 // interested_parties() hooks from the API.
95 class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
96  public:
99  class CallState {
100  public:
101  CallState() = default;
102  virtual ~CallState() = default;
103 
108  virtual void* Alloc(size_t size) = 0;
109  };
110 
114  public:
115  virtual ~MetadataInterface() = default;
116 
118  // TODO(ctiller): DO NOT MAKE THIS A PUBLIC API YET
119  // This needs some API design to ensure we can add/remove/replace metadata
120  // keys... we're deliberately not doing so to save some time whilst
121  // cleaning up the internal metadata representation, but we should add
122  // something back before making this a public API.
124 
130  virtual void Add(absl::string_view key, absl::string_view value) = 0;
131 
133  virtual std::vector<std::pair<std::string, std::string>>
134  TestOnlyCopyToVector() = 0;
135 
138  };
139 
141  struct PickArgs {
152  };
153 
158  public:
159  virtual ~BackendMetricAccessor() = default;
160 
163  virtual const BackendMetricData* GetBackendMetricData() = 0;
164  };
165 
169  public:
170  virtual ~SubchannelCallTrackerInterface() = default;
171 
173  virtual void Start() = 0;
174 
179  struct FinishArgs {
183  };
184  virtual void Finish(FinishArgs args) = 0;
185  };
186 
188  struct PickResult {
190  struct Complete {
193 
198  std::unique_ptr<SubchannelCallTrackerInterface> subchannel_call_tracker;
199 
200  explicit Complete(
202  std::unique_ptr<SubchannelCallTrackerInterface> tracker = nullptr)
203  : subchannel(std::move(sc)),
205  };
206 
210  struct Queue {};
211 
216  struct Fail {
218 
219  explicit Fail(absl::Status s) : status(s) {}
220  };
221 
225  struct Drop {
227 
228  explicit Drop(absl::Status s) : status(s) {}
229  };
230 
231  // A pick result must be one of these types.
232  // Default to Queue, just to allow default construction.
234 
235  PickResult() = default;
236  // NOLINTNEXTLINE(google-explicit-constructor)
237  PickResult(Complete complete) : result(std::move(complete)) {}
238  // NOLINTNEXTLINE(google-explicit-constructor)
240  // NOLINTNEXTLINE(google-explicit-constructor)
242  // NOLINTNEXTLINE(google-explicit-constructor)
243  PickResult(Drop drop) : result(std::move(drop)) {}
244  };
245 
261  public:
262  SubchannelPicker() = default;
263  virtual ~SubchannelPicker() = default;
264 
265  virtual PickResult Pick(PickArgs args) = 0;
266  };
267 
270  // TODO(roth): Once insecure builds go away, add methods for accessing
271  // channel creds. By default, that should strip off the call creds
272  // attached to the channel creds, but there should also be a "use at
273  // your own risk" option to get the channel creds without stripping
274  // off the attached call creds.
276  public:
277  ChannelControlHelper() = default;
278  virtual ~ChannelControlHelper() = default;
279 
282  ServerAddress address, const grpc_channel_args& args) = 0;
283 
287  const absl::Status& status,
288  std::unique_ptr<SubchannelPicker>) = 0;
289 
291  virtual void RequestReresolution() = 0;
292 
294  virtual absl::string_view GetAuthority() = 0;
295 
298  virtual void AddTraceEvent(TraceSeverity severity,
300  };
301 
305  class Config : public RefCounted<Config> {
306  public:
307  ~Config() override = default;
308 
309  // Returns the load balancing policy name
310  virtual const char* name() const = 0;
311  };
312 
315  struct UpdateArgs {
327 
328  // TODO(roth): Before making this a public API, find a better
329  // abstraction for representing channel args.
330  const grpc_channel_args* args = nullptr;
331 
332  // TODO(roth): Remove everything below once channel args is
333  // converted to a copyable and movable C++ object.
334  UpdateArgs() = default;
336  UpdateArgs(const UpdateArgs& other);
337  UpdateArgs(UpdateArgs&& other) noexcept;
338  UpdateArgs& operator=(const UpdateArgs& other);
339  UpdateArgs& operator=(UpdateArgs&& other) noexcept;
340  };
341 
343  struct Args {
345  std::shared_ptr<WorkSerializer> work_serializer;
349  std::unique_ptr<ChannelControlHelper> channel_control_helper;
351  // TODO(roth): Find a better channel args representation for this API.
352  // TODO(roth): Clarify ownership semantics here -- currently, this
353  // does not take ownership of args, which is the opposite of how we
354  // handle them in UpdateArgs.
355  const grpc_channel_args* args = nullptr;
356  };
357 
358  explicit LoadBalancingPolicy(Args args, intptr_t initial_refcount = 1);
359  ~LoadBalancingPolicy() override;
360 
361  // Not copyable nor movable.
362  LoadBalancingPolicy(const LoadBalancingPolicy&) = delete;
364 
366  virtual const char* name() const = 0;
367 
371  // TODO(roth): Change this to return some indication as to whether the
372  // update has been accepted, so that we can indicate to the resolver
373  // whether it should go into backoff to retry the resolution.
374  virtual void UpdateLocked(UpdateArgs) = 0; // NOLINT
375 
379  virtual void ExitIdleLocked() {}
380 
382  virtual void ResetBackoffLocked() = 0;
383 
385 
386  // Note: This must be invoked while holding the work_serializer.
387  void Orphan() override;
388 
389  // A picker that returns PickResult::Queue for all picks.
390  // Also calls the parent LB policy's ExitIdleLocked() method when the
391  // first pick is seen.
392  class QueuePicker : public SubchannelPicker {
393  public:
395  : parent_(std::move(parent)) {}
396 
397  ~QueuePicker() override { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
398 
399  PickResult Pick(PickArgs args) override;
400 
401  private:
403  bool exit_idle_called_ = false;
404  };
405 
406  // A picker that returns PickResult::Fail for all picks.
408  public:
410 
411  PickResult Pick(PickArgs /*args*/) override {
412  return PickResult::Fail(status_);
413  }
414 
415  private:
417  };
418 
419  protected:
420  std::shared_ptr<WorkSerializer> work_serializer() const {
421  return work_serializer_;
422  }
423 
424  // Note: LB policies MUST NOT call any method on the helper from their
425  // constructor.
427  return channel_control_helper_.get();
428  }
429 
431  virtual void ShutdownLocked() = 0;
432 
433  private:
435  std::shared_ptr<WorkSerializer> work_serializer_;
439  std::unique_ptr<ChannelControlHelper> channel_control_helper_;
440 };
441 
442 } // namespace grpc_core
443 
444 #endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
grpc_core::LoadBalancingPolicy::SubchannelCallTrackerInterface::Finish
virtual void Finish(FinishArgs args)=0
trace.h
grpc_core::LoadBalancingPolicy::CallState
Definition: lb_policy.h:99
grpc_core::LoadBalancingPolicy::PickArgs::initial_metadata
MetadataInterface * initial_metadata
Definition: lb_policy.h:148
grpc_core::LoadBalancingPolicy::ChannelControlHelper::TRACE_INFO
@ TRACE_INFO
Definition: lb_policy.h:297
grpc_core::LoadBalancingPolicy::SubchannelCallTrackerInterface::~SubchannelCallTrackerInterface
virtual ~SubchannelCallTrackerInterface()=default
grpc_core::LoadBalancingPolicy::QueuePicker::Pick
PickResult Pick(PickArgs args) override
Definition: lb_policy.cc:101
grpc_core::LoadBalancingPolicy::BackendMetricAccessor
Definition: lb_policy.h:157
grpc_core::LoadBalancingPolicy::ChannelControlHelper::TraceSeverity
TraceSeverity
Adds a trace message associated with the channel.
Definition: lb_policy.h:297
grpc_core::LoadBalancingPolicy::UpdateArgs::args
const grpc_channel_args * args
Definition: lb_policy.h:330
grpc_core::LoadBalancingPolicy::UpdateArgs::resolution_note
std::string resolution_note
Definition: lb_policy.h:326
grpc_core::LoadBalancingPolicy::PickResult::Complete::subchannel
RefCountedPtr< SubchannelInterface > subchannel
The subchannel to be used for the call. Must be non-null.
Definition: lb_policy.h:192
grpc_core::LoadBalancingPolicy::Config::~Config
~Config() override=default
orphanable.h
bloat_diff.severity
def severity
Definition: bloat_diff.py:143
grpc_core::LoadBalancingPolicy::interested_parties
grpc_pollset_set * interested_parties() const
Definition: lb_policy.h:384
grpc_core::LoadBalancingPolicy::UpdateArgs
Definition: lb_policy.h:315
grpc_core::LoadBalancingPolicy
Definition: lb_policy.h:95
grpc_core::LoadBalancingPolicy::Args::args
const grpc_channel_args * args
Channel args.
Definition: lb_policy.h:355
grpc_core::LoadBalancingPolicy::QueuePicker::parent_
RefCountedPtr< LoadBalancingPolicy > parent_
Definition: lb_policy.h:402
grpc_core::LoadBalancingPolicy::ChannelControlHelper::CreateSubchannel
virtual RefCountedPtr< SubchannelInterface > CreateSubchannel(ServerAddress address, const grpc_channel_args &args)=0
Creates a new subchannel with the specified channel args.
grpc_core::LoadBalancingPolicy::UpdateArgs::UpdateArgs
UpdateArgs()=default
grpc_core::LoadBalancingPolicy::ChannelControlHelper::TRACE_WARNING
@ TRACE_WARNING
Definition: lb_policy.h:297
grpc_core::LoadBalancingPolicy::ChannelControlHelper::AddTraceEvent
virtual void AddTraceEvent(TraceSeverity severity, absl::string_view message)=0
grpc_core::BackendMetricData
Definition: backend_metric_data.h:31
grpc_core
Definition: call_metric_recorder.h:31
grpc_core::LoadBalancingPolicy::SubchannelPicker::SubchannelPicker
SubchannelPicker()=default
grpc_pollset_set
struct grpc_pollset_set grpc_pollset_set
Definition: iomgr_fwd.h:23
grpc_core::LoadBalancingPolicy::MetadataInterface::Lookup
virtual absl::optional< absl::string_view > Lookup(absl::string_view key, std::string *buffer) const =0
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
grpc_core::LoadBalancingPolicy::PickArgs::call_state
CallState * call_state
Definition: lb_policy.h:151
grpc_core::LoadBalancingPolicy::PickArgs::path
absl::string_view path
The path of the call. Indicates the RPC service and method name.
Definition: lb_policy.h:143
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
grpc_core::LoadBalancingPolicy::ChannelControlHelper::UpdateState
virtual void UpdateState(grpc_connectivity_state state, const absl::Status &status, std::unique_ptr< SubchannelPicker >)=0
grpc_core::ServerAddress
Definition: server_address.h:49
grpc_core::LoadBalancingPolicy::Config
Definition: lb_policy.h:305
status
absl::Status status
Definition: rls.cc:251
grpc_core::LoadBalancingPolicy::ChannelControlHelper::~ChannelControlHelper
virtual ~ChannelControlHelper()=default
grpc_core::LoadBalancingPolicy::TransientFailurePicker
Definition: lb_policy.h:407
grpc_core::LoadBalancingPolicy::CallState::CallState
CallState()=default
grpc_core::LoadBalancingPolicy::UpdateLocked
virtual void UpdateLocked(UpdateArgs)=0
grpc_core::LoadBalancingPolicy::PickResult::PickResult
PickResult(Complete complete)
Definition: lb_policy.h:237
grpc_core::LoadBalancingPolicy::PickResult::Complete
A successful pick.
Definition: lb_policy.h:190
grpc_channel_args
Definition: grpc_types.h:132
subchannel_interface.h
message
char * message
Definition: libuv/docs/code/tty-gravity/main.c:12
grpc_connectivity_state
grpc_connectivity_state
Definition: include/grpc/impl/codegen/connectivity_state.h:30
grpc_core::LoadBalancingPolicy::PickResult::Drop::Drop
Drop(absl::Status s)
Definition: lb_policy.h:228
grpc_core::LoadBalancingPolicy::PickResult
The result of picking a subchannel for a call.
Definition: lb_policy.h:188
grpc_types.h
grpc_core::LoadBalancingPolicy::SubchannelPicker::Pick
virtual PickResult Pick(PickArgs args)=0
grpc_core::LoadBalancingPolicy::UpdateArgs::config
RefCountedPtr< Config > config
The LB policy config.
Definition: lb_policy.h:320
backend_metric_data.h
DEBUG_LOCATION
#define DEBUG_LOCATION
Definition: debug_location.h:41
grpc_core::LoadBalancingPolicy::MetadataInterface::TestOnlyCopyToVector
virtual std::vector< std::pair< std::string, std::string > > TestOnlyCopyToVector()=0
Produce a vector of metadata key/value strings for tests.
grpc_core::LoadBalancingPolicy::ChannelControlHelper::ChannelControlHelper
ChannelControlHelper()=default
grpc_core::LoadBalancingPolicy::PickResult::Complete::subchannel_call_tracker
std::unique_ptr< SubchannelCallTrackerInterface > subchannel_call_tracker
Definition: lb_policy.h:198
grpc_core::LoadBalancingPolicy::SubchannelPicker::~SubchannelPicker
virtual ~SubchannelPicker()=default
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
grpc_core::grpc_trace_lb_policy_refcount
DebugOnlyTraceFlag grpc_trace_lb_policy_refcount(false, "lb_policy_refcount")
Definition: lb_policy.h:54
grpc_core::LoadBalancingPolicy::BackendMetricAccessor::GetBackendMetricData
virtual const BackendMetricData * GetBackendMetricData()=0
grpc_core::LoadBalancingPolicy::MetadataInterface::~MetadataInterface
virtual ~MetadataInterface()=default
grpc_core::LoadBalancingPolicy::PickArgs
Arguments used when picking a subchannel for a call.
Definition: lb_policy.h:141
grpc_core::RefCountedPtr
Definition: ref_counted_ptr.h:35
absl::move
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
Definition: abseil-cpp/absl/utility/utility.h:221
grpc_core::LoadBalancingPolicy::QueuePicker::~QueuePicker
~QueuePicker() override
Definition: lb_policy.h:397
queue
Definition: sync_test.cc:39
grpc_core::LoadBalancingPolicy::work_serializer_
std::shared_ptr< WorkSerializer > work_serializer_
Work Serializer under which LB policy actions take place.
Definition: lb_policy.h:435
grpc_core::LoadBalancingPolicy::PickResult::Fail
Definition: lb_policy.h:216
grpc_core::LoadBalancingPolicy::PickResult::Fail::Fail
Fail(absl::Status s)
Definition: lb_policy.h:219
grpc_core::LoadBalancingPolicy::ExitIdleLocked
virtual void ExitIdleLocked()
Definition: lb_policy.h:379
work_serializer.h
grpc_core::LoadBalancingPolicy::channel_control_helper_
std::unique_ptr< ChannelControlHelper > channel_control_helper_
Channel control helper.
Definition: lb_policy.h:439
grpc_core::fail
Poll< absl::StatusOr< std::tuple< T... > > > fail()
Definition: try_join_test.cc:45
connectivity_state.h
grpc_core::LoadBalancingPolicy::QueuePicker
Definition: lb_policy.h:392
absl::optional< absl::string_view >
grpc_core::LoadBalancingPolicy::PickResult::Fail::status
absl::Status status
Definition: lb_policy.h:217
grpc_core::LoadBalancingPolicy::channel_control_helper
ChannelControlHelper * channel_control_helper() const
Definition: lb_policy.h:426
grpc_channel_args_destroy
void grpc_channel_args_destroy(grpc_channel_args *a)
Definition: channel_args.cc:360
grpc_core::LoadBalancingPolicy::BackendMetricAccessor::~BackendMetricAccessor
virtual ~BackendMetricAccessor()=default
server_address.h
grpc_core::LoadBalancingPolicy::Config::name
virtual const char * name() const =0
intptr_t
_W64 signed int intptr_t
Definition: stdint-msvc2008.h:118
grpc_core::LoadBalancingPolicy::QueuePicker::QueuePicker
QueuePicker(RefCountedPtr< LoadBalancingPolicy > parent)
Definition: lb_policy.h:394
grpc_core::LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs::backend_metric_accessor
BackendMetricAccessor * backend_metric_accessor
Definition: lb_policy.h:182
grpc_core::InternallyRefCounted
Definition: orphanable.h:73
buffer
char buffer[1024]
Definition: libuv/docs/code/idle-compute/main.c:8
grpc_core::LoadBalancingPolicy::ChannelControlHelper::TRACE_ERROR
@ TRACE_ERROR
Definition: lb_policy.h:297
grpc_core::LoadBalancingPolicy::CallState::Alloc
virtual void * Alloc(size_t size)=0
grpc_core::RefCounted
Definition: ref_counted.h:280
grpc_core::LoadBalancingPolicy::~LoadBalancingPolicy
~LoadBalancingPolicy() override
Definition: lb_policy.cc:46
stdint.h
grpc_core::LoadBalancingPolicy::Args
Args used to instantiate an LB policy.
Definition: lb_policy.h:343
grpc_core::LoadBalancingPolicy::TransientFailurePicker::Pick
PickResult Pick(PickArgs) override
Definition: lb_policy.h:411
grpc_core::LoadBalancingPolicy::PickResult::PickResult
PickResult(Drop drop)
Definition: lb_policy.h:243
grpc_core::LoadBalancingPolicy::SubchannelPicker
Definition: lb_policy.h:260
grpc_core::TraceFlag
Definition: debug/trace.h:63
grpc_core::LoadBalancingPolicy::PickResult::PickResult
PickResult(Fail fail)
Definition: lb_policy.h:241
grpc_core::LoadBalancingPolicy::Args::work_serializer
std::shared_ptr< WorkSerializer > work_serializer
The work_serializer under which all LB policy calls will be run.
Definition: lb_policy.h:345
value
const char * value
Definition: hpack_parser_table.cc:165
grpc_core::LoadBalancingPolicy::SubchannelCallTrackerInterface::Start
virtual void Start()=0
Called when a subchannel call is started after an LB pick.
grpc_core::LoadBalancingPolicy::QueuePicker::exit_idle_called_
bool exit_idle_called_
Definition: lb_policy.h:403
grpc_core::LoadBalancingPolicy::ChannelControlHelper::GetAuthority
virtual absl::string_view GetAuthority()=0
Returns the channel authority.
grpc_core::LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs::trailing_metadata
MetadataInterface * trailing_metadata
Definition: lb_policy.h:181
grpc_core::LoadBalancingPolicy::ShutdownLocked
virtual void ShutdownLocked()=0
Shuts down the policy.
debug_location.h
key
const char * key
Definition: hpack_parser_table.cc:164
grpc_core::LoadBalancingPolicy::TransientFailurePicker::TransientFailurePicker
TransientFailurePicker(absl::Status status)
Definition: lb_policy.h:409
grpc_core::LoadBalancingPolicy::PickResult::PickResult
PickResult()=default
ref_counted.h
grpc_core::LoadBalancingPolicy::UpdateArgs::addresses
absl::StatusOr< ServerAddressList > addresses
Definition: lb_policy.h:318
absl::Status
Definition: third_party/abseil-cpp/absl/status/status.h:424
grpc_core::LoadBalancingPolicy::PickResult::Drop
Definition: lb_policy.h:225
grpc_core::LoadBalancingPolicy::SubchannelCallTrackerInterface
Definition: lb_policy.h:168
std
Definition: grpcpp/impl/codegen/async_unary_call.h:407
grpc_core::LoadBalancingPolicy::UpdateArgs::operator=
UpdateArgs & operator=(const UpdateArgs &other)
Definition: lb_policy.cc:74
grpc_core::LoadBalancingPolicy::UpdateArgs::~UpdateArgs
~UpdateArgs()
Definition: lb_policy.h:335
state
Definition: bloaty/third_party/zlib/contrib/blast/blast.c:41
grpc_core::LoadBalancingPolicy::PickResult::Drop::status
absl::Status status
Definition: lb_policy.h:226
grpc_core::LoadBalancingPolicy::LoadBalancingPolicy
LoadBalancingPolicy(Args args, intptr_t initial_refcount=1)
Definition: lb_policy.cc:36
grpc_core::LoadBalancingPolicy::ChannelControlHelper
Definition: lb_policy.h:275
ref_counted_ptr.h
grpc_core::LoadBalancingPolicy::Args::channel_control_helper
std::unique_ptr< ChannelControlHelper > channel_control_helper
Definition: lb_policy.h:349
grpc_core::LoadBalancingPolicy::Orphan
void Orphan() override
Definition: lb_policy.cc:50
grpc_core::LoadBalancingPolicy::work_serializer
std::shared_ptr< WorkSerializer > work_serializer() const
Definition: lb_policy.h:420
grpc_core::LoadBalancingPolicy::operator=
LoadBalancingPolicy & operator=(const LoadBalancingPolicy &)=delete
grpc_core::LoadBalancingPolicy::interested_parties_
grpc_pollset_set * interested_parties_
Owned pointer to interested parties in load balancing decisions.
Definition: lb_policy.h:437
channel_args.h
grpc_core::LoadBalancingPolicy::ChannelControlHelper::RequestReresolution
virtual void RequestReresolution()=0
Requests that the resolver re-resolve.
grpc_core::LoadBalancingPolicy::CallState::~CallState
virtual ~CallState()=default
tracker
SessionTracker * tracker
Definition: ssl_session_cache_test.cc:38
Fail
void Fail(const char *msg)
Definition: bloaty/third_party/googletest/googletest/test/gtest_assert_by_exception_test.cc:52
grpc_core::LoadBalancingPolicy::PickResult::PickResult
PickResult(Queue queue)
Definition: lb_policy.h:239
grpc_core::LoadBalancingPolicy::MetadataInterface::Add
virtual void Add(absl::string_view key, absl::string_view value)=0
absl::StatusOr< ServerAddressList >
iomgr_fwd.h
grpc_core::LoadBalancingPolicy::MetadataInterface
Definition: lb_policy.h:113
grpc_core::LoadBalancingPolicy::PickResult::result
absl::variant< Complete, Queue, Fail, Drop > result
Definition: lb_policy.h:233
size
voidpf void uLong size
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
grpc_core::LoadBalancingPolicy::ResetBackoffLocked
virtual void ResetBackoffLocked()=0
Resets connection backoff.
grpc_core::LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs::status
absl::Status status
Definition: lb_policy.h:180
absl::variant
Definition: abseil-cpp/absl/types/internal/variant.h:46
grpc_core::LoadBalancingPolicy::TransientFailurePicker::status_
absl::Status status_
Definition: lb_policy.h:416
grpc_core::LoadBalancingPolicy::name
virtual const char * name() const =0
Returns the name of the LB policy.
grpc_core::LoadBalancingPolicy::PickResult::Complete::Complete
Complete(RefCountedPtr< SubchannelInterface > sc, std::unique_ptr< SubchannelCallTrackerInterface > tracker=nullptr)
Definition: lb_policy.h:200
grpc_core::LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs
Definition: lb_policy.h:179
grpc_core::LoadBalancingPolicy::PickResult::Queue
Definition: lb_policy.h:210
port_platform.h


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:15