Go to the documentation of this file.
17 #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
18 #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
30 #include "absl/status/status.h"
31 #include "absl/types/optional.h"
74 template <
typename SubchannelListType,
typename SubchannelDataType>
80 template <
typename SubchannelListType,
typename SubchannelDataType>
90 return static_cast<size_t>(
static_cast<const SubchannelDataType*
>(
this) -
178 template <
typename SubchannelListType,
typename SubchannelDataType>
246 template <
typename SubchannelListType,
typename SubchannelDataType>
253 "[%s %p] subchannel list %p index %" PRIuPTR
" of %" PRIuPTR
254 " (subchannel %p): connectivity changed: old_state=%s, new_state=%s, "
255 "status=%s, shutting_down=%d, pending_watcher=%p",
281 template <
typename SubchannelListType,
typename SubchannelDataType>
288 template <
typename SubchannelListType,
typename SubchannelDataType>
293 template <
typename SubchannelListType,
typename SubchannelDataType>
299 "[%s %p] subchannel list %p index %" PRIuPTR
" of %" PRIuPTR
300 " (subchannel %p): unreffing subchannel (%s)",
309 template <
typename SubchannelListType,
typename SubchannelDataType>
311 SubchannelDataType>::ResetBackoffLocked() {
317 template <
typename SubchannelListType,
typename SubchannelDataType>
319 SubchannelDataType>::StartConnectivityWatchLocked() {
322 "[%s %p] subchannel list %p index %" PRIuPTR
" of %" PRIuPTR
323 " (subchannel %p): starting watch",
332 std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>(
336 template <
typename SubchannelListType,
typename SubchannelDataType>
339 if (pending_watcher_ !=
nullptr) {
342 "[%s %p] subchannel list %p index %" PRIuPTR
" of %" PRIuPTR
343 " (subchannel %p): canceling connectivity watch (%s)",
348 subchannel_->CancelConnectivityStateWatch(pending_watcher_);
349 pending_watcher_ =
nullptr;
353 template <
typename SubchannelListType,
typename SubchannelDataType>
355 CancelConnectivityWatchLocked(
"shutdown");
356 UnrefSubchannelLocked(
"shutdown");
363 template <
typename SubchannelListType,
typename SubchannelDataType>
374 "[%s %p] Creating subchannel list %p for %" PRIuPTR
" subchannels",
386 "[%s %p] could not create subchannel for address %s, ignoring",
393 "[%s %p] subchannel list %p index %" PRIuPTR
394 ": Created subchannel %p for address %s",
396 address.ToString().c_str());
403 template <
typename SubchannelListType,
typename SubchannelDataType>
406 gpr_log(
GPR_INFO,
"[%s %p] Destroying subchannel_list %p", tracer_, policy_,
414 template <
typename SubchannelListType,
typename SubchannelDataType>
416 SubchannelDataType>::StartWatchingLocked() {
418 sd->StartConnectivityWatchLocked();
422 template <
typename SubchannelListType,
typename SubchannelDataType>
431 sd->ShutdownLocked();
435 template <
typename SubchannelListType,
typename SubchannelDataType>
437 SubchannelDataType>::ResetBackoffLocked() {
445 #endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
absl::Status connectivity_status()
RefCountedPtr< SubchannelInterface > subchannel_
OrphanablePtr< PickFirstSubchannelList > subchannel_list_
std::string ToString(StatusToStringMode mode=StatusToStringMode::kDefault) const
virtual RefCountedPtr< SubchannelInterface > CreateSubchannel(ServerAddress address, const grpc_channel_args &args)=0
Creates a new subchannel with the specified channel args.
SubchannelList< SubchannelListType, SubchannelDataType > * subchannel_list_
Watcher(SubchannelData< SubchannelListType, SubchannelDataType > *subchannel_data, RefCountedPtr< SubchannelListType > subchannel_list)
SubchannelData(SubchannelList< SubchannelListType, SubchannelDataType > *subchannel_list, const ServerAddress &address, RefCountedPtr< SubchannelInterface > subchannel)
struct grpc_pollset_set grpc_pollset_set
void reset(T *value=nullptr)
size_t num_subchannels() const
RefCountedPtr< Subchannel > subchannel_
void OnConnectivityStateChange(grpc_connectivity_state new_state, absl::Status status) override
std::vector< ManualConstructor< SubchannelDataType > > subchannels_
virtual ~SubchannelList()
virtual ~SubchannelData()
RefCountedPtr< SubchannelListType > subchannel_list_
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
void StartConnectivityWatchLocked()
SubchannelData< SubchannelListType, SubchannelDataType > * subchannel_data_
SubchannelList(LoadBalancingPolicy *policy, const char *tracer, ServerAddressList addresses, LoadBalancingPolicy::ChannelControlHelper *helper, const grpc_channel_args &args)
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
LoadBalancingPolicy * policy() const
const char * tracer() const
SubchannelInterface::ConnectivityStateWatcherInterface * pending_watcher_
grpc_pollset_set * interested_parties() override
std::vector< ServerAddress > ServerAddressList
SubchannelInterface * subchannel() const
absl::optional< grpc_connectivity_state > connectivity_state()
void StartWatchingLocked()
const char * ConnectivityStateName(grpc_connectivity_state state)
absl::optional< grpc_connectivity_state > connectivity_state_
std::set< SubchannelWrapper * > subchannels_
void UnrefSubchannelLocked(const char *reason)
void ResetBackoffLocked()
void ResetBackoffLocked()
virtual void ProcessConnectivityChangeLocked(absl::optional< grpc_connectivity_state > old_state, grpc_connectivity_state new_state)=0
SubchannelDataType * subchannel(size_t index)
bool shutting_down() const
absl::Status connectivity_status_
static PyObject * Index(PyContainer *self, PyObject *item)
virtual void ShutdownLocked()
internal::RefMatcher< T & > Ref(T &x)
SubchannelListType * subchannel_list() const
void CancelConnectivityWatchLocked(const char *reason)
LoadBalancingPolicy * policy_
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:27