Skip to content

Commit fbe7eec

Browse files
committed
cares: add AsyncListener support
1 parent 95c3810 commit fbe7eec

1 file changed

Lines changed: 9 additions & 36 deletions

File tree

src/cares_wrap.cc

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
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

Comments
 (0)