@@ -121,10 +121,12 @@ inline const char* ToErrorCodeString(int status) {
121121
122122class ChannelWrap ;
123123
124- struct node_ares_task {
124+ struct node_ares_task : public MemoryRetainer {
125125 ChannelWrap* channel;
126126 ares_socket_t sock;
127127 uv_poll_t poll_watcher;
128+
129+ void MemoryInfo (MemoryTracker* tracker) const override ;
128130};
129131
130132struct TaskHash {
@@ -167,7 +169,12 @@ class ChannelWrap : public AsyncWrap {
167169 inline int active_query_count () { return active_query_count_; }
168170 inline node_ares_task_list* task_list () { return &task_list_; }
169171
170- size_t self_size () const override { return sizeof (*this ); }
172+ void MemoryInfo (MemoryTracker* tracker) const override {
173+ tracker->TrackThis (this );
174+ if (timer_handle_ != nullptr )
175+ tracker->TrackFieldWithSize (" timer handle" , sizeof (*timer_handle_));
176+ tracker->TrackField (" task list" , task_list_);
177+ }
171178
172179 static void AresTimeout (uv_timer_t * handle);
173180
@@ -181,6 +188,11 @@ class ChannelWrap : public AsyncWrap {
181188 node_ares_task_list task_list_;
182189};
183190
191+ void node_ares_task::MemoryInfo (MemoryTracker* tracker) const {
192+ tracker->TrackThis (this );
193+ tracker->TrackField (" channel" , channel);
194+ }
195+
184196ChannelWrap::ChannelWrap (Environment* env,
185197 Local<Object> object)
186198 : AsyncWrap(env, object, PROVIDER_DNSCHANNEL),
@@ -209,7 +221,10 @@ class GetAddrInfoReqWrap : public ReqWrap<uv_getaddrinfo_t> {
209221 Local<Object> req_wrap_obj,
210222 bool verbatim);
211223
212- size_t self_size () const override { return sizeof (*this ); }
224+ void MemoryInfo (MemoryTracker* tracker) const override {
225+ tracker->TrackThis (this );
226+ }
227+
213228 bool verbatim () const { return verbatim_; }
214229
215230 private:
@@ -228,7 +243,9 @@ class GetNameInfoReqWrap : public ReqWrap<uv_getnameinfo_t> {
228243 public:
229244 GetNameInfoReqWrap (Environment* env, Local<Object> req_wrap_obj);
230245
231- size_t self_size () const override { return sizeof (*this ); }
246+ void MemoryInfo (MemoryTracker* tracker) const override {
247+ tracker->TrackThis (this );
248+ }
232249};
233250
234251GetNameInfoReqWrap::GetNameInfoReqWrap (Environment* env,
@@ -270,13 +287,13 @@ void ares_poll_cb(uv_poll_t* watcher, int status, int events) {
270287
271288void ares_poll_close_cb (uv_poll_t * watcher) {
272289 node_ares_task* task = ContainerOf (&node_ares_task::poll_watcher, watcher);
273- free ( task) ;
290+ delete task;
274291}
275292
276293
277294/* Allocates and returns a new node_ares_task */
278295node_ares_task* ares_task_create (ChannelWrap* channel, ares_socket_t sock) {
279- auto task = node::UncheckedMalloc< node_ares_task>( 1 );
296+ auto task = new node_ares_task ( );
280297
281298 if (task == nullptr ) {
282299 /* Out of memory. */
@@ -1172,7 +1189,9 @@ class QueryAnyWrap: public QueryWrap {
11721189 return 0 ;
11731190 }
11741191
1175- size_t self_size () const override { return sizeof (*this ); }
1192+ void MemoryInfo (MemoryTracker* tracker) const override {
1193+ tracker->TrackThis (this );
1194+ }
11761195
11771196 protected:
11781197 void Parse (unsigned char * buf, int len) override {
@@ -1349,7 +1368,9 @@ class QueryAWrap: public QueryWrap {
13491368 return 0 ;
13501369 }
13511370
1352- size_t self_size () const override { return sizeof (*this ); }
1371+ void MemoryInfo (MemoryTracker* tracker) const override {
1372+ tracker->TrackThis (this );
1373+ }
13531374
13541375 protected:
13551376 void Parse (unsigned char * buf, int len) override {
@@ -1393,7 +1414,9 @@ class QueryAaaaWrap: public QueryWrap {
13931414 return 0 ;
13941415 }
13951416
1396- size_t self_size () const override { return sizeof (*this ); }
1417+ void MemoryInfo (MemoryTracker* tracker) const override {
1418+ tracker->TrackThis (this );
1419+ }
13971420
13981421 protected:
13991422 void Parse (unsigned char * buf, int len) override {
@@ -1437,7 +1460,9 @@ class QueryCnameWrap: public QueryWrap {
14371460 return 0 ;
14381461 }
14391462
1440- size_t self_size () const override { return sizeof (*this ); }
1463+ void MemoryInfo (MemoryTracker* tracker) const override {
1464+ tracker->TrackThis (this );
1465+ }
14411466
14421467 protected:
14431468 void Parse (unsigned char * buf, int len) override {
@@ -1468,7 +1493,9 @@ class QueryMxWrap: public QueryWrap {
14681493 return 0 ;
14691494 }
14701495
1471- size_t self_size () const override { return sizeof (*this ); }
1496+ void MemoryInfo (MemoryTracker* tracker) const override {
1497+ tracker->TrackThis (this );
1498+ }
14721499
14731500 protected:
14741501 void Parse (unsigned char * buf, int len) override {
@@ -1499,7 +1526,9 @@ class QueryNsWrap: public QueryWrap {
14991526 return 0 ;
15001527 }
15011528
1502- size_t self_size () const override { return sizeof (*this ); }
1529+ void MemoryInfo (MemoryTracker* tracker) const override {
1530+ tracker->TrackThis (this );
1531+ }
15031532
15041533 protected:
15051534 void Parse (unsigned char * buf, int len) override {
@@ -1530,7 +1559,9 @@ class QueryTxtWrap: public QueryWrap {
15301559 return 0 ;
15311560 }
15321561
1533- size_t self_size () const override { return sizeof (*this ); }
1562+ void MemoryInfo (MemoryTracker* tracker) const override {
1563+ tracker->TrackThis (this );
1564+ }
15341565
15351566 protected:
15361567 void Parse (unsigned char * buf, int len) override {
@@ -1560,7 +1591,9 @@ class QuerySrvWrap: public QueryWrap {
15601591 return 0 ;
15611592 }
15621593
1563- size_t self_size () const override { return sizeof (*this ); }
1594+ void MemoryInfo (MemoryTracker* tracker) const override {
1595+ tracker->TrackThis (this );
1596+ }
15641597
15651598 protected:
15661599 void Parse (unsigned char * buf, int len) override {
@@ -1589,7 +1622,9 @@ class QueryPtrWrap: public QueryWrap {
15891622 return 0 ;
15901623 }
15911624
1592- size_t self_size () const override { return sizeof (*this ); }
1625+ void MemoryInfo (MemoryTracker* tracker) const override {
1626+ tracker->TrackThis (this );
1627+ }
15931628
15941629 protected:
15951630 void Parse (unsigned char * buf, int len) override {
@@ -1620,7 +1655,9 @@ class QueryNaptrWrap: public QueryWrap {
16201655 return 0 ;
16211656 }
16221657
1623- size_t self_size () const override { return sizeof (*this ); }
1658+ void MemoryInfo (MemoryTracker* tracker) const override {
1659+ tracker->TrackThis (this );
1660+ }
16241661
16251662 protected:
16261663 void Parse (unsigned char * buf, int len) override {
@@ -1650,7 +1687,9 @@ class QuerySoaWrap: public QueryWrap {
16501687 return 0 ;
16511688 }
16521689
1653- size_t self_size () const override { return sizeof (*this ); }
1690+ void MemoryInfo (MemoryTracker* tracker) const override {
1691+ tracker->TrackThis (this );
1692+ }
16541693
16551694 protected:
16561695 void Parse (unsigned char * buf, int len) override {
@@ -1729,7 +1768,9 @@ class GetHostByAddrWrap: public QueryWrap {
17291768 return 0 ;
17301769 }
17311770
1732- size_t self_size () const override { return sizeof (*this ); }
1771+ void MemoryInfo (MemoryTracker* tracker) const override {
1772+ tracker->TrackThis (this );
1773+ }
17331774
17341775 protected:
17351776 void Parse (struct hostent * host) override {
0 commit comments