2121
2222#define CARES_STATICLIB
2323#include " ares.h"
24+ #include " async-wrap.h"
25+ #include " async-wrap-inl.h"
2426#include " env.h"
2527#include " env-inl.h"
2628#include " node.h"
@@ -220,11 +222,10 @@ static Local<Array> HostentToNames(struct hostent* host) {
220222}
221223
222224
223- class QueryWrap {
225+ class QueryWrap : public AsyncWrap {
224226 public:
225- QueryWrap (Environment* env, Local<Object> req_wrap_obj) : env_(env) {
226- HandleScope scope (node_isolate);
227- persistent ().Reset (node_isolate, req_wrap_obj);
227+ QueryWrap (Environment* env, Local<Object> req_wrap_obj)
228+ : AsyncWrap(env, req_wrap_obj) {
228229 }
229230
230231 virtual ~QueryWrap () {
@@ -243,14 +244,6 @@ class QueryWrap {
243244 return 0 ;
244245 }
245246
246- inline Persistent<Object>& persistent () {
247- return object_;
248- }
249-
250- inline Local<Object> object () {
251- return PersistentToLocal (node_isolate, persistent ());
252- }
253-
254247 protected:
255248 void * GetQueryArg () {
256249 return static_cast <void *>(this );
@@ -289,11 +282,7 @@ class QueryWrap {
289282 Integer::New (0 , env ()->isolate ()),
290283 answer
291284 };
292- MakeCallback (env (),
293- object (),
294- env ()->oncomplete_string (),
295- ARRAY_SIZE (argv),
296- argv);
285+ MakeCallback (env ()->oncomplete_string (), ARRAY_SIZE (argv), argv);
297286 }
298287
299288 void CallOnComplete (Local<Value> answer, Local<Value> family) {
@@ -304,11 +293,7 @@ class QueryWrap {
304293 answer,
305294 family
306295 };
307- MakeCallback (env (),
308- object (),
309- env ()->oncomplete_string (),
310- ARRAY_SIZE (argv),
311- argv);
296+ MakeCallback (env ()->oncomplete_string (), ARRAY_SIZE (argv), argv);
312297 }
313298
314299 void ParseError (int status) {
@@ -350,7 +335,7 @@ class QueryWrap {
350335 arg = FIXED_ONE_BYTE_STRING (env ()->isolate (), " UNKNOWN_ARES_ERROR" );
351336 break ;
352337 }
353- MakeCallback (env (), object (), env () ->oncomplete_string (), 1 , &arg);
338+ MakeCallback (env ()->oncomplete_string (), 1 , &arg);
354339 }
355340
356341 // Subclasses should implement the appropriate Parse method.
@@ -361,14 +346,6 @@ class QueryWrap {
361346 virtual void Parse (struct hostent * host) {
362347 assert (0 );
363348 };
364-
365- inline Environment* env () const {
366- return env_;
367- }
368-
369- private:
370- Persistent<Object> object_;
371- Environment* const env_;
372349};
373350
374351
@@ -911,11 +888,7 @@ void AfterGetAddrInfo(uv_getaddrinfo_t* req, int status, struct addrinfo* res) {
911888 uv_freeaddrinfo (res);
912889
913890 // Make the callback into JavaScript
914- MakeCallback (env,
915- req_wrap->object (),
916- env->oncomplete_string (),
917- ARRAY_SIZE (argv),
918- argv);
891+ req_wrap->MakeCallback (env->oncomplete_string (), ARRAY_SIZE (argv), argv);
919892
920893 delete req_wrap;
921894}
0 commit comments