@@ -121,10 +121,12 @@ inline const char* ToErrorCodeString(int status) {
121
121
122
122
class ChannelWrap ;
123
123
124
- struct node_ares_task {
124
+ struct node_ares_task : public MemoryRetainer {
125
125
ChannelWrap* channel;
126
126
ares_socket_t sock;
127
127
uv_poll_t poll_watcher;
128
+
129
+ void MemoryInfo (MemoryTracker* tracker) const override ;
128
130
};
129
131
130
132
struct TaskHash {
@@ -167,7 +169,12 @@ class ChannelWrap : public AsyncWrap {
167
169
inline int active_query_count () { return active_query_count_; }
168
170
inline node_ares_task_list* task_list () { return &task_list_; }
169
171
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
+ }
171
178
172
179
static void AresTimeout (uv_timer_t * handle);
173
180
@@ -181,6 +188,11 @@ class ChannelWrap : public AsyncWrap {
181
188
node_ares_task_list task_list_;
182
189
};
183
190
191
+ void node_ares_task::MemoryInfo (MemoryTracker* tracker) const {
192
+ tracker->TrackThis (this );
193
+ tracker->TrackField (" channel" , channel);
194
+ }
195
+
184
196
ChannelWrap::ChannelWrap (Environment* env,
185
197
Local<Object> object)
186
198
: AsyncWrap(env, object, PROVIDER_DNSCHANNEL),
@@ -209,7 +221,10 @@ class GetAddrInfoReqWrap : public ReqWrap<uv_getaddrinfo_t> {
209
221
Local<Object> req_wrap_obj,
210
222
bool verbatim);
211
223
212
- size_t self_size () const override { return sizeof (*this ); }
224
+ void MemoryInfo (MemoryTracker* tracker) const override {
225
+ tracker->TrackThis (this );
226
+ }
227
+
213
228
bool verbatim () const { return verbatim_; }
214
229
215
230
private:
@@ -228,7 +243,9 @@ class GetNameInfoReqWrap : public ReqWrap<uv_getnameinfo_t> {
228
243
public:
229
244
GetNameInfoReqWrap (Environment* env, Local<Object> req_wrap_obj);
230
245
231
- size_t self_size () const override { return sizeof (*this ); }
246
+ void MemoryInfo (MemoryTracker* tracker) const override {
247
+ tracker->TrackThis (this );
248
+ }
232
249
};
233
250
234
251
GetNameInfoReqWrap::GetNameInfoReqWrap (Environment* env,
@@ -270,13 +287,13 @@ void ares_poll_cb(uv_poll_t* watcher, int status, int events) {
270
287
271
288
void ares_poll_close_cb (uv_poll_t * watcher) {
272
289
node_ares_task* task = ContainerOf (&node_ares_task::poll_watcher, watcher);
273
- free ( task) ;
290
+ delete task;
274
291
}
275
292
276
293
277
294
/* Allocates and returns a new node_ares_task */
278
295
node_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 ( );
280
297
281
298
if (task == nullptr ) {
282
299
/* Out of memory. */
@@ -1172,7 +1189,9 @@ class QueryAnyWrap: public QueryWrap {
1172
1189
return 0 ;
1173
1190
}
1174
1191
1175
- size_t self_size () const override { return sizeof (*this ); }
1192
+ void MemoryInfo (MemoryTracker* tracker) const override {
1193
+ tracker->TrackThis (this );
1194
+ }
1176
1195
1177
1196
protected:
1178
1197
void Parse (unsigned char * buf, int len) override {
@@ -1349,7 +1368,9 @@ class QueryAWrap: public QueryWrap {
1349
1368
return 0 ;
1350
1369
}
1351
1370
1352
- size_t self_size () const override { return sizeof (*this ); }
1371
+ void MemoryInfo (MemoryTracker* tracker) const override {
1372
+ tracker->TrackThis (this );
1373
+ }
1353
1374
1354
1375
protected:
1355
1376
void Parse (unsigned char * buf, int len) override {
@@ -1393,7 +1414,9 @@ class QueryAaaaWrap: public QueryWrap {
1393
1414
return 0 ;
1394
1415
}
1395
1416
1396
- size_t self_size () const override { return sizeof (*this ); }
1417
+ void MemoryInfo (MemoryTracker* tracker) const override {
1418
+ tracker->TrackThis (this );
1419
+ }
1397
1420
1398
1421
protected:
1399
1422
void Parse (unsigned char * buf, int len) override {
@@ -1437,7 +1460,9 @@ class QueryCnameWrap: public QueryWrap {
1437
1460
return 0 ;
1438
1461
}
1439
1462
1440
- size_t self_size () const override { return sizeof (*this ); }
1463
+ void MemoryInfo (MemoryTracker* tracker) const override {
1464
+ tracker->TrackThis (this );
1465
+ }
1441
1466
1442
1467
protected:
1443
1468
void Parse (unsigned char * buf, int len) override {
@@ -1468,7 +1493,9 @@ class QueryMxWrap: public QueryWrap {
1468
1493
return 0 ;
1469
1494
}
1470
1495
1471
- size_t self_size () const override { return sizeof (*this ); }
1496
+ void MemoryInfo (MemoryTracker* tracker) const override {
1497
+ tracker->TrackThis (this );
1498
+ }
1472
1499
1473
1500
protected:
1474
1501
void Parse (unsigned char * buf, int len) override {
@@ -1499,7 +1526,9 @@ class QueryNsWrap: public QueryWrap {
1499
1526
return 0 ;
1500
1527
}
1501
1528
1502
- size_t self_size () const override { return sizeof (*this ); }
1529
+ void MemoryInfo (MemoryTracker* tracker) const override {
1530
+ tracker->TrackThis (this );
1531
+ }
1503
1532
1504
1533
protected:
1505
1534
void Parse (unsigned char * buf, int len) override {
@@ -1530,7 +1559,9 @@ class QueryTxtWrap: public QueryWrap {
1530
1559
return 0 ;
1531
1560
}
1532
1561
1533
- size_t self_size () const override { return sizeof (*this ); }
1562
+ void MemoryInfo (MemoryTracker* tracker) const override {
1563
+ tracker->TrackThis (this );
1564
+ }
1534
1565
1535
1566
protected:
1536
1567
void Parse (unsigned char * buf, int len) override {
@@ -1560,7 +1591,9 @@ class QuerySrvWrap: public QueryWrap {
1560
1591
return 0 ;
1561
1592
}
1562
1593
1563
- size_t self_size () const override { return sizeof (*this ); }
1594
+ void MemoryInfo (MemoryTracker* tracker) const override {
1595
+ tracker->TrackThis (this );
1596
+ }
1564
1597
1565
1598
protected:
1566
1599
void Parse (unsigned char * buf, int len) override {
@@ -1589,7 +1622,9 @@ class QueryPtrWrap: public QueryWrap {
1589
1622
return 0 ;
1590
1623
}
1591
1624
1592
- size_t self_size () const override { return sizeof (*this ); }
1625
+ void MemoryInfo (MemoryTracker* tracker) const override {
1626
+ tracker->TrackThis (this );
1627
+ }
1593
1628
1594
1629
protected:
1595
1630
void Parse (unsigned char * buf, int len) override {
@@ -1620,7 +1655,9 @@ class QueryNaptrWrap: public QueryWrap {
1620
1655
return 0 ;
1621
1656
}
1622
1657
1623
- size_t self_size () const override { return sizeof (*this ); }
1658
+ void MemoryInfo (MemoryTracker* tracker) const override {
1659
+ tracker->TrackThis (this );
1660
+ }
1624
1661
1625
1662
protected:
1626
1663
void Parse (unsigned char * buf, int len) override {
@@ -1650,7 +1687,9 @@ class QuerySoaWrap: public QueryWrap {
1650
1687
return 0 ;
1651
1688
}
1652
1689
1653
- size_t self_size () const override { return sizeof (*this ); }
1690
+ void MemoryInfo (MemoryTracker* tracker) const override {
1691
+ tracker->TrackThis (this );
1692
+ }
1654
1693
1655
1694
protected:
1656
1695
void Parse (unsigned char * buf, int len) override {
@@ -1729,7 +1768,9 @@ class GetHostByAddrWrap: public QueryWrap {
1729
1768
return 0 ;
1730
1769
}
1731
1770
1732
- size_t self_size () const override { return sizeof (*this ); }
1771
+ void MemoryInfo (MemoryTracker* tracker) const override {
1772
+ tracker->TrackThis (this );
1773
+ }
1733
1774
1734
1775
protected:
1735
1776
void Parse (struct hostent * host) override {
0 commit comments