#include <grpc/support/port_platform.h>
#include "src/core/lib/resolver/server_address.h"
#include <string.h>
#include <algorithm>
#include <initializer_list>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
namespace grpc_core {
const char* ServerAddressWeightAttribute::kServerAddressWeightAttributeKey = …;
ServerAddress::ServerAddress(
const grpc_resolved_address& address, const ChannelArgs& args,
std::map<const char*, std::unique_ptr<AttributeInterface>> attributes)
: … { … }
ServerAddress::ServerAddress(
const void* address, size_t address_len, const ChannelArgs& args,
std::map<const char*, std::unique_ptr<AttributeInterface>> attributes)
: … { … }
ServerAddress::ServerAddress(const ServerAddress& other)
: … { … }
ServerAddress& ServerAddress::operator=(const ServerAddress& other) { … }
ServerAddress::ServerAddress(ServerAddress&& other) noexcept
: … { … }
ServerAddress& ServerAddress::operator=(ServerAddress&& other) noexcept { … }
namespace {
int CompareAttributes(
const std::map<const char*,
std::unique_ptr<ServerAddress::AttributeInterface>>&
attributes1,
const std::map<const char*,
std::unique_ptr<ServerAddress::AttributeInterface>>&
attributes2) { … }
}
int ServerAddress::Cmp(const ServerAddress& other) const { … }
const ServerAddress::AttributeInterface* ServerAddress::GetAttribute(
const char* key) const { … }
ServerAddress ServerAddress::WithAttribute(
const char* key, std::unique_ptr<AttributeInterface> value) const { … }
std::string ServerAddress::ToString() const { … }
std::string ServerAddressWeightAttribute::ToString() const { … }
}