23 #include "absl/base/thread_annotations.h"
24 #include "absl/memory/memory.h"
31 #if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
34 #include <sys/ioctl.h>
38 #include "absl/strings/str_cat.h"
46 class GrpcPolledFdPosix :
public GrpcPolledFd {
51 driver_pollset_set_ = driver_pollset_set;
55 ~GrpcPolledFdPosix()
override {
61 grpc_fd_orphan(fd_,
nullptr, &phony_release_fd,
"c-ares query finished");
64 void RegisterForOnReadableLocked(
grpc_closure* read_closure)
69 void RegisterForOnWriteableLocked(
grpc_closure* write_closure)
74 bool IsFdStillReadableLocked()
76 size_t bytes_available = 0;
91 const char*
GetName()
const override {
return name_.c_str(); }
100 class GrpcPolledFdFactoryPosix :
public GrpcPolledFdFactory {
102 GrpcPolledFd* NewGrpcPolledFdLocked(
104 return new GrpcPolledFdPosix(as, driver_pollset_set);
107 void ConfigureAresChannelLocked(
ares_channel )
override {}
111 return absl::make_unique<GrpcPolledFdFactoryPosix>();