19 #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SERVER_ADDRESS_H
20 #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SERVER_ADDRESS_H
27 #include "absl/container/inlined_vector.h"
28 #include "absl/strings/str_format.h"
57 virtual std::unique_ptr<AttributeInterface>
Copy()
const = 0;
68 std::map<
const char*, std::unique_ptr<AttributeInterface>>
72 std::map<
const char*, std::unique_ptr<AttributeInterface>>
92 const AttributeInterface*
GetAttribute(
const char* key)
const;
97 std::unique_ptr<AttributeInterface> value)
const;
104 std::map<const char*, std::unique_ptr<AttributeInterface>> attributes_;
122 uint32_t
weight()
const {
return weight_; }
124 std::unique_ptr<AttributeInterface>
Copy()
const override {
125 return absl::make_unique<ServerAddressWeightAttribute>(weight_);
128 int Cmp(
const AttributeInterface* other)
const override {
129 const auto* other_locality_attr =
131 return GPR_ICMP(weight_, other_locality_attr->weight_);
135 return absl::StrFormat(
"%d", weight_);
void grpc_channel_args_destroy(grpc_channel_args *a)
Destroy arguments created by grpc_channel_args_copy.
Definition: channel_args.cc:203
Definition: server_address.h:52
virtual std::string ToString() const =0
virtual std::unique_ptr< AttributeInterface > Copy() const =0
virtual int Cmp(const AttributeInterface *other) const =0
virtual ~AttributeInterface()=default
Definition: server_address.h:43
~ServerAddress()
Definition: server_address.h:75
const AttributeInterface * GetAttribute(const char *key) const
Definition: server_address.cc:131
int Cmp(const ServerAddress &other) const
Definition: server_address.cc:121
ServerAddress(const grpc_resolved_address &address, grpc_channel_args *args, std::map< const char *, std::unique_ptr< AttributeInterface >> attributes={})
Definition: server_address.cc:44
const grpc_resolved_address & address() const
Definition: server_address.h:89
const grpc_channel_args * args() const
Definition: server_address.h:90
std::string ToString() const
Definition: server_address.cc:151
ServerAddress WithAttribute(const char *key, std::unique_ptr< AttributeInterface > value) const
Definition: server_address.cc:140
ServerAddress & operator=(const ServerAddress &other)
Definition: server_address.cc:63
bool operator==(const ServerAddress &other) const
Definition: server_address.h:85
Definition: server_address.h:116
ServerAddressWeightAttribute(uint32_t weight)
Definition: server_address.h:120
int Cmp(const AttributeInterface *other) const override
Definition: server_address.h:128
std::unique_ptr< AttributeInterface > Copy() const override
Definition: server_address.h:124
uint32_t weight() const
Definition: server_address.h:122
std::string ToString() const override
Definition: server_address.h:134
static const char * kServerAddressWeightAttributeKey
Definition: server_address.h:118
Round Robin Policy.
Definition: backend_metric.cc:26
absl::InlinedVector< ServerAddress, 1 > ServerAddressList
Definition: server_address.h:111
An array of arguments that can be passed around.
Definition: grpc_types.h:132
Definition: resolve_address.h:44
#define GPR_ICMP(a, b)
Definition: useful.h:60