@@ -477,31 +477,18 @@ static void ELDHistogramNew(const FunctionCallbackInfo<Value>& args) {
477
477
ELDHistogram::ELDHistogram (
478
478
Environment* env,
479
479
Local<Object> wrap,
480
- int32_t resolution) : BaseObject(env, wrap),
480
+ int32_t resolution) : HandleWrap(env,
481
+ wrap,
482
+ reinterpret_cast <uv_handle_t *>(&timer_),
483
+ AsyncWrap::PROVIDER_ELDHISTOGRAM),
481
484
Histogram (1 , 3.6e12 ),
482
485
resolution_(resolution) {
483
486
MakeWeak ();
484
- timer_ = new uv_timer_t ();
485
- uv_timer_init (env->event_loop (), timer_);
486
- timer_->data = this ;
487
+ uv_timer_init (env->event_loop (), &timer_);
487
488
}
488
489
489
- void ELDHistogram::CloseTimer () {
490
- if (timer_ == nullptr )
491
- return ;
492
-
493
- env ()->CloseHandle (timer_, [](uv_timer_t * handle) { delete handle; });
494
- timer_ = nullptr ;
495
- }
496
-
497
- ELDHistogram::~ELDHistogram () {
498
- Disable ();
499
- CloseTimer ();
500
- }
501
-
502
- void ELDHistogramDelayInterval (uv_timer_t * req) {
503
- ELDHistogram* histogram =
504
- reinterpret_cast <ELDHistogram*>(req->data );
490
+ void ELDHistogram::DelayIntervalCallback (uv_timer_t * req) {
491
+ ELDHistogram* histogram = ContainerOf (&ELDHistogram::timer_, req);
505
492
histogram->RecordDelta ();
506
493
TRACE_COUNTER1 (TRACING_CATEGORY_NODE2 (perf, event_loop),
507
494
" min" , histogram->Min ());
@@ -537,21 +524,21 @@ bool ELDHistogram::RecordDelta() {
537
524
}
538
525
539
526
bool ELDHistogram::Enable () {
540
- if (enabled_) return false ;
527
+ if (enabled_ || IsHandleClosing () ) return false ;
541
528
enabled_ = true ;
542
529
prev_ = 0 ;
543
- uv_timer_start (timer_,
544
- ELDHistogramDelayInterval ,
530
+ uv_timer_start (& timer_,
531
+ DelayIntervalCallback ,
545
532
resolution_,
546
533
resolution_);
547
- uv_unref (reinterpret_cast <uv_handle_t *>(timer_));
534
+ uv_unref (reinterpret_cast <uv_handle_t *>(& timer_));
548
535
return true ;
549
536
}
550
537
551
538
bool ELDHistogram::Disable () {
552
- if (!enabled_) return false ;
539
+ if (!enabled_ || IsHandleClosing () ) return false ;
553
540
enabled_ = false ;
554
- uv_timer_stop (timer_);
541
+ uv_timer_stop (& timer_);
555
542
return true ;
556
543
}
557
544
0 commit comments