#include <grpc/support/port_platform.h>
#include <algorithm>
#include <memory>
#include <string>
#include <utility>
#include "absl/status/statusor.h"
#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
#include <grpc/support/log.h>
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/iomgr/port.h"
#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/resolver/resolver.h"
#include "src/core/lib/resolver/resolver_factory.h"
#include "src/core/lib/resolver/server_address.h"
#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
namespace {
class SockaddrResolver : public Resolver { … };
SockaddrResolver::SockaddrResolver(ServerAddressList addresses,
ResolverArgs args)
: … { … }
void SockaddrResolver::StartLocked() { … }
bool ParseUri(const URI& uri,
bool parse(const URI& uri, grpc_resolved_address* dst),
ServerAddressList* addresses) { … }
OrphanablePtr<Resolver> CreateSockaddrResolver(
ResolverArgs args, bool parse(const URI& uri, grpc_resolved_address* dst)) { … }
class IPv4ResolverFactory : public ResolverFactory { … };
class IPv6ResolverFactory : public ResolverFactory { … };
#ifdef GRPC_HAVE_UNIX_SOCKET
class UnixResolverFactory : public ResolverFactory { … };
class UnixAbstractResolverFactory : public ResolverFactory { … };
#endif
}
void RegisterSockaddrResolver(CoreConfiguration::Builder* builder) { … }
}