@@ -81,87 +81,57 @@ static void set_resolve_port(int port) {
8181
8282namespace {
8383
84- class TestDNSResolver : public grpc_core ::DNSResolver {
84+ using grpc_event_engine::experimental::EventEngine;
85+
86+ class TestDNSResolver : public EventEngine ::DNSResolver {
8587 public:
86- explicit TestDNSResolver (
87- std::shared_ptr<grpc_core::DNSResolver> default_resolver)
88- : default_resolver_(std::move(default_resolver)),
89- engine_(grpc_event_engine::experimental::GetDefaultEventEngine()) {}
90- TaskHandle LookupHostname (
91- std::function<void (absl::StatusOr<std::vector<grpc_resolved_address>>)>
92- on_resolved,
93- absl::string_view name, absl::string_view default_port,
94- grpc_core::Duration timeout, grpc_pollset_set* interested_parties,
95- absl::string_view name_server) override {
88+ TestDNSResolver ()
89+ : engine_(grpc_event_engine::experimental::GetDefaultEventEngine()),
90+ default_resolver_ (engine_->GetDNSResolver (
91+ EventEngine::DNSResolver::ResolverOptions ())) {}
92+
93+ void LookupHostname (LookupHostnameCallback on_resolve, absl::string_view name,
94+ absl::string_view default_port) override {
95+ CHECK (default_resolver_.ok ());
9696 if (name != " test" ) {
97- return default_resolver_->LookupHostname (std::move (on_resolved), name,
98- default_port, timeout,
99- interested_parties, name_server);
97+ return (*default_resolver_)
98+ ->LookupHostname (std::move (on_resolve), name, default_port);
10099 }
101- MakeDNSRequest (std::move (on_resolved));
102- return kNullHandle ;
103- }
104-
105- absl::StatusOr<std::vector<grpc_resolved_address>> LookupHostnameBlocking (
106- absl::string_view name, absl::string_view default_port) override {
107- return default_resolver_->LookupHostnameBlocking (name, default_port);
108- }
109-
110- TaskHandle LookupSRV (
111- std::function<void (absl::StatusOr<std::vector<grpc_resolved_address>>)>
112- on_resolved,
113- absl::string_view /* name */ , grpc_core::Duration /* timeout */ ,
114- grpc_pollset_set* /* interested_parties */ ,
115- absl::string_view /* name_server */ ) override {
116- engine_->Run ([on_resolved] {
117- grpc_core::ExecCtx exec_ctx;
118- on_resolved (absl::UnimplementedError (
119- " The Testing DNS resolver does not support looking up SRV records" ));
120- });
121- return {-1 , -1 };
122- };
123-
124- TaskHandle LookupTXT (
125- std::function<void (absl::StatusOr<std::string>)> on_resolved,
126- absl::string_view /* name */ , grpc_core::Duration /* timeout */ ,
127- grpc_pollset_set* /* interested_parties */ ,
128- absl::string_view /* name_server */ ) override {
129- // Not supported
130- engine_->Run ([on_resolved] {
131- grpc_core::ExecCtx exec_ctx;
132- on_resolved (absl::UnimplementedError (
133- " The Testing DNS resolver does not support looking up TXT records" ));
134- });
135- return {-1 , -1 };
136- };
137-
138- bool Cancel (TaskHandle /* handle*/ ) override { return false ; }
139-
140- private:
141- void MakeDNSRequest (
142- std::function<void (absl::StatusOr<std::vector<grpc_resolved_address>>)>
143- on_done) {
144100 gpr_mu_lock (&g_mu);
145101 if (g_resolve_port < 0 ) {
146102 gpr_mu_unlock (&g_mu);
147- new grpc_core::DNSCallbackExecCtxScheduler (
148- std::move (on_done), absl::UnknownError (" Forced Failure" ));
103+ engine_->Run ([on_resolve = std::move (on_resolve)]() mutable {
104+ on_resolve (absl::UnknownError (" Forced Failure" ));
105+ });
149106 } else {
150- std::vector<grpc_resolved_address> addrs;
151- grpc_resolved_address addr;
152- grpc_sockaddr_in* sa = reinterpret_cast <grpc_sockaddr_in*>(&addr);
153- sa->sin_family = GRPC_AF_INET;
154- sa->sin_addr .s_addr = 0x100007f ;
155- sa->sin_port = grpc_htons (static_cast <uint16_t >(g_resolve_port));
156- addr.len = static_cast <socklen_t >(sizeof (*sa));
157- addrs.push_back (addr);
107+ std::vector<EventEngine::ResolvedAddress> addrs;
108+ struct sockaddr_in in;
109+ in.sin_family = GRPC_AF_INET;
110+ in.sin_addr .s_addr = 0x100007f ;
111+ in.sin_port = grpc_htons (static_cast <uint16_t >(g_resolve_port));
112+ addrs.push_back (EventEngine::ResolvedAddress (
113+ reinterpret_cast <const sockaddr*>(&in), sizeof (struct sockaddr_in )));
158114 gpr_mu_unlock (&g_mu);
159- new grpc_core::DNSCallbackExecCtxScheduler (std::move (on_done),
160- std::move (addrs));
115+ engine_->Run ([on_resolve = std::move (on_resolve),
116+ addrs = std::move (addrs)]() mutable {
117+ on_resolve (std::move (addrs));
118+ });
161119 }
162120 }
163- std::shared_ptr<grpc_core::DNSResolver> default_resolver_;
164- std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine_;
121+ void LookupSRV (LookupSRVCallback on_resolve,
122+ absl::string_view name) override {
123+ CHECK (default_resolver_.ok ());
124+ return (*default_resolver_)->LookupSRV (std::move (on_resolve), name);
125+ }
126+ void LookupTXT (LookupTXTCallback on_resolve,
127+ absl::string_view name) override {
128+ CHECK (default_resolver_.ok ());
129+ return (*default_resolver_)->LookupTXT (std::move (on_resolve), name);
130+ }
131+
132+ private:
133+ std::shared_ptr<EventEngine> engine_;
134+ absl::StatusOr<std::unique_ptr<EventEngine::DNSResolver>> default_resolver_;
165135};
166136
167137} // namespace
0 commit comments