Go to the documentation of this file.
21 #ifdef GRPC_HAVE_UNIX_SOCKET
24 #include <sys/socket.h>
29 #include <type_traits>
32 #include "absl/memory/memory.h"
33 #include "absl/status/statusor.h"
34 #include "absl/strings/str_cat.h"
35 #include "absl/strings/string_view.h"
36 #include "absl/strings/strip.h"
56 class BinderResolver :
public Resolver {
65 void StartLocked()
override {
73 void ShutdownLocked()
override {}
81 class BinderResolverFactory :
public ResolverFactory {
85 bool IsValidUri(
const URI& uri)
const override {
86 return ParseUri(uri,
nullptr);
89 OrphanablePtr<Resolver> CreateResolver(ResolverArgs
args)
const override {
91 if (!ParseUri(
args.uri, &addresses))
return nullptr;
92 return MakeOrphanable<BinderResolver>(
std::move(addresses),
106 memset(resolved_addr, 0,
sizeof(*resolved_addr));
107 struct sockaddr_un* un =
108 reinterpret_cast<struct sockaddr_un*
>(resolved_addr->
addr);
109 un->sun_family = AF_MAX;
110 static_assert(
sizeof(un->sun_path) >= 101,
111 "unix socket path size is unexpectedly short");
112 if (
path.size() + 1 >
sizeof(un->sun_path)) {
119 static_cast<socklen_t
>(
sizeof(un->sun_family) +
path.size() + 1);
126 if (!uri.authority().empty()) {
137 if (addresses !=
nullptr) {
138 addresses->emplace_back(
addr,
nullptr );
147 builder->resolver_registry()->RegisterResolverFactory(
148 absl::make_unique<BinderResolverFactory>());
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
return memset(p, 0, total)
absl::StatusOr< HierarchicalAddressMap > addresses_
ABSL_MUST_USE_RESULT absl::string_view StripPrefix(absl::string_view str, absl::string_view prefix)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
TestInstance::Result Result
def c_str(s, encoding='ascii')
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
const grpc_channel_args * channel_args_
void grpc_channel_args_destroy(grpc_channel_args *a)
grpc_channel_args * grpc_channel_args_copy(const grpc_channel_args *src)
std::vector< ServerAddress > ServerAddressList
std::unique_ptr< ResultHandler > result_handler_
std::string grpc_error_std_string(grpc_error_handle error)
#define GRPC_ERROR_CREATE_FROM_CPP_STRING(desc)
#define GRPC_ERROR_UNREF(err)
char addr[GRPC_MAX_SOCKADDR_SIZE]
#define GRPC_ERROR_IS_NONE(err)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:48