From 96a9439fd2c9577a735d6abf01990b45b836fba2 Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Tue, 3 May 2016 10:47:10 -0400 Subject: [PATCH 1/2] Revert "handle_wrap: IsRefed -> Unrefed, no isAlive check" This reverts commit 9bb5a5e2a127010807f5b8a8bf4cf34109271c55. This API is not suitable because it depended on being able to potentially access the handle's flag after the handle was already cleaned up. Since this is not actually possible (obviously, oops) this newer API no longer makes much sense, and the older API is more suitable. API comparison: IsRefed -> Has a strong reference AND is alive. (Deterministic) Unrefed -> Has a weak reference OR is dead. (Less deterministic) Refs: https://github.com/nodejs/node/pull/6395 Refs: https://github.com/nodejs/node/pull/6204 Refs: https://github.com/nodejs/node/pull/6401 Refs: https://github.com/nodejs/node/pull/6382 Fixes: https://github.com/nodejs/node/pull/6381 PR-URL: https://github.com/nodejs/node/pull/6546 Reviewed-By: James M Snell Reviewed-By: Ben Noordhuis Reviewed-By: Trevor Norris Conflicts: src/handle_wrap.cc test/parallel/test-handle-wrap-isrefed-tty.js test/parallel/test-handle-wrap-isrefed.js --- src/handle_wrap.cc | 4 +- src/handle_wrap.h | 2 +- src/pipe_wrap.cc | 2 +- src/process_wrap.cc | 2 +- src/signal_wrap.cc | 2 +- src/tcp_wrap.cc | 2 +- src/timer_wrap.cc | 2 +- src/tty_wrap.cc | 2 +- src/udp_wrap.cc | 2 +- test/parallel/test-handle-wrap-isrefed-tty.js | 13 ++- test/parallel/test-handle-wrap-isrefed.js | 80 ++++++++----------- 11 files changed, 50 insertions(+), 63 deletions(-) diff --git a/src/handle_wrap.cc b/src/handle_wrap.cc index b82449989dd4..d28b6959c821 100644 --- a/src/handle_wrap.cc +++ b/src/handle_wrap.cc @@ -33,9 +33,9 @@ void HandleWrap::Unref(const FunctionCallbackInfo& args) { } -void HandleWrap::Unrefed(const FunctionCallbackInfo& args) { +void HandleWrap::IsRefed(const FunctionCallbackInfo& args) { HandleWrap* wrap = Unwrap(args.Holder()); - args.GetReturnValue().Set(!HasRef(wrap)); + args.GetReturnValue().Set(HasRef(wrap)); } diff --git a/src/handle_wrap.h b/src/handle_wrap.h index ef37cf9e3413..506358c14056 100644 --- a/src/handle_wrap.h +++ b/src/handle_wrap.h @@ -35,7 +35,7 @@ class HandleWrap : public AsyncWrap { static void Close(const v8::FunctionCallbackInfo& args); static void Ref(const v8::FunctionCallbackInfo& args); static void Unref(const v8::FunctionCallbackInfo& args); - static void Unrefed(const v8::FunctionCallbackInfo& args); + static void IsRefed(const v8::FunctionCallbackInfo& args); static inline bool IsAlive(const HandleWrap* wrap) { return wrap != nullptr && wrap->state_ != kClosed; diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc index 43df5cb7158b..25080041c276 100644 --- a/src/pipe_wrap.cc +++ b/src/pipe_wrap.cc @@ -80,7 +80,7 @@ void PipeWrap::Initialize(Local target, env->SetProtoMethod(t, "close", HandleWrap::Close); env->SetProtoMethod(t, "unref", HandleWrap::Unref); env->SetProtoMethod(t, "ref", HandleWrap::Ref); - env->SetProtoMethod(t, "unrefed", HandleWrap::Unrefed); + env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed); StreamWrap::AddMethods(env, t); diff --git a/src/process_wrap.cc b/src/process_wrap.cc index b804d9f35e47..0b7ad41b61a5 100644 --- a/src/process_wrap.cc +++ b/src/process_wrap.cc @@ -40,7 +40,7 @@ class ProcessWrap : public HandleWrap { env->SetProtoMethod(constructor, "ref", HandleWrap::Ref); env->SetProtoMethod(constructor, "unref", HandleWrap::Unref); - env->SetProtoMethod(constructor, "unrefed", HandleWrap::Unrefed); + env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Process"), constructor->GetFunction()); diff --git a/src/signal_wrap.cc b/src/signal_wrap.cc index a008b083f0ab..ca5201d81a4b 100644 --- a/src/signal_wrap.cc +++ b/src/signal_wrap.cc @@ -32,7 +32,7 @@ class SignalWrap : public HandleWrap { env->SetProtoMethod(constructor, "close", HandleWrap::Close); env->SetProtoMethod(constructor, "ref", HandleWrap::Ref); env->SetProtoMethod(constructor, "unref", HandleWrap::Unref); - env->SetProtoMethod(constructor, "unrefed", HandleWrap::Unrefed); + env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed); env->SetProtoMethod(constructor, "start", Start); env->SetProtoMethod(constructor, "stop", Stop); diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index d1cc99e756e1..4e8617af2d0c 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -87,7 +87,7 @@ void TCPWrap::Initialize(Local target, env->SetProtoMethod(t, "ref", HandleWrap::Ref); env->SetProtoMethod(t, "unref", HandleWrap::Unref); - env->SetProtoMethod(t, "unrefed", HandleWrap::Unrefed); + env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed); StreamWrap::AddMethods(env, t, StreamBase::kFlagHasWritev); diff --git a/src/timer_wrap.cc b/src/timer_wrap.cc index b2c41ebf73a5..4a1cd3716a90 100644 --- a/src/timer_wrap.cc +++ b/src/timer_wrap.cc @@ -39,7 +39,7 @@ class TimerWrap : public HandleWrap { env->SetProtoMethod(constructor, "close", HandleWrap::Close); env->SetProtoMethod(constructor, "ref", HandleWrap::Ref); env->SetProtoMethod(constructor, "unref", HandleWrap::Unref); - env->SetProtoMethod(constructor, "unrefed", HandleWrap::Unrefed); + env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed); env->SetProtoMethod(constructor, "start", Start); env->SetProtoMethod(constructor, "stop", Stop); diff --git a/src/tty_wrap.cc b/src/tty_wrap.cc index e7acedd27a17..5a1d333c3d2b 100644 --- a/src/tty_wrap.cc +++ b/src/tty_wrap.cc @@ -36,7 +36,7 @@ void TTYWrap::Initialize(Local target, env->SetProtoMethod(t, "close", HandleWrap::Close); env->SetProtoMethod(t, "unref", HandleWrap::Unref); - env->SetProtoMethod(t, "unrefed", HandleWrap::Unrefed); + env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed); StreamWrap::AddMethods(env, t, StreamBase::kFlagNoShutdown); diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index b5f3a3cf540f..ac087f395ace 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -108,7 +108,7 @@ void UDPWrap::Initialize(Local target, env->SetProtoMethod(t, "ref", HandleWrap::Ref); env->SetProtoMethod(t, "unref", HandleWrap::Unref); - env->SetProtoMethod(t, "unrefed", HandleWrap::Unrefed); + env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "UDP"), t->GetFunction()); env->set_udp_constructor_function(t->GetFunction()); diff --git a/test/parallel/test-handle-wrap-isrefed-tty.js b/test/parallel/test-handle-wrap-isrefed-tty.js index 3eca28e18a8d..972b34e0dc07 100644 --- a/test/parallel/test-handle-wrap-isrefed-tty.js +++ b/test/parallel/test-handle-wrap-isrefed-tty.js @@ -9,19 +9,18 @@ function makeAssert(message) { strictEqual(actual, expected, message); }; } -const assert = makeAssert('unrefed() not working on tty_wrap'); +const assert = makeAssert('isRefed() not working on tty_wrap'); if (process.argv[2] === 'child') { // Test tty_wrap in piped child to guarentee stdin being a TTY. const ReadStream = require('tty').ReadStream; const tty = new ReadStream(0); - assert(Object.getPrototypeOf(tty._handle).hasOwnProperty('unrefed'), true); - assert(tty._handle.unrefed(), false); + assert(Object.getPrototypeOf(tty._handle).hasOwnProperty('isRefed'), true); + assert(tty._handle.isRefed(), true); tty.unref(); - assert(tty._handle.unrefed(), true); - tty._handle.close(common.mustCall(() => assert(tty._handle.unrefed(), true))); - tty._handle.close(common.fail); - assert(tty._handle.unrefed(), true); + assert(tty._handle.isRefed(), false); + tty._handle.close( + common.mustCall(() => assert(tty._handle.isRefed(), false))); return; } diff --git a/test/parallel/test-handle-wrap-isrefed.js b/test/parallel/test-handle-wrap-isrefed.js index 544729c22109..e4036e75f6b9 100644 --- a/test/parallel/test-handle-wrap-isrefed.js +++ b/test/parallel/test-handle-wrap-isrefed.js @@ -12,102 +12,90 @@ function makeAssert(message) { // child_process { - const assert = makeAssert('unrefed() not working on process_wrap'); + const assert = makeAssert('isRefed() not working on process_wrap'); const spawn = require('child_process').spawn; const cmd = common.isWindows ? 'rundll32' : 'ls'; const cp = spawn(cmd); - assert(Object.getPrototypeOf(cp._handle).hasOwnProperty('unrefed'), true); - assert(cp._handle.unrefed(), false); + assert(Object.getPrototypeOf(cp._handle).hasOwnProperty('isRefed'), true); + assert(cp._handle.isRefed(), true); cp.unref(); - assert(cp._handle.unrefed(), true); + assert(cp._handle.isRefed(), false); cp.ref(); - assert(cp._handle.unrefed(), false); - cp._handle.close(common.mustCall(() => assert(cp._handle.unrefed(), true))); - cp._handle.close(common.fail); - assert(cp._handle.unrefed(), false); + assert(cp._handle.isRefed(), true); + cp._handle.close(common.mustCall(() => assert(cp._handle.isRefed(), false))); } // dgram { - const assert = makeAssert('unrefed() not working on udp_wrap'); + const assert = makeAssert('isRefed() not working on udp_wrap'); const dgram = require('dgram'); const sock4 = dgram.createSocket('udp4'); - assert(Object.getPrototypeOf(sock4._handle).hasOwnProperty('unrefed'), true); - assert(sock4._handle.unrefed(), false); + assert(Object.getPrototypeOf(sock4._handle).hasOwnProperty('isRefed'), true); + assert(sock4._handle.isRefed(), true); sock4.unref(); - assert(sock4._handle.unrefed(), true); + assert(sock4._handle.isRefed(), false); sock4.ref(); - assert(sock4._handle.unrefed(), false); + assert(sock4._handle.isRefed(), true); sock4._handle.close( - common.mustCall(() => assert(sock4._handle.unrefed(), true))); - sock4._handle.close(common.fail); - assert(sock4._handle.unrefed(), false); + common.mustCall(() => assert(sock4._handle.isRefed(), false))); const sock6 = dgram.createSocket('udp6'); - assert(Object.getPrototypeOf(sock6._handle).hasOwnProperty('unrefed'), true); - assert(sock6._handle.unrefed(), false); + assert(Object.getPrototypeOf(sock6._handle).hasOwnProperty('isRefed'), true); + assert(sock6._handle.isRefed(), true); sock6.unref(); - assert(sock6._handle.unrefed(), true); + assert(sock6._handle.isRefed(), false); sock6.ref(); - assert(sock6._handle.unrefed(), false); + assert(sock6._handle.isRefed(), true); sock6._handle.close( - common.mustCall(() => assert(sock6._handle.unrefed(), true))); - sock6._handle.close(common.fail); - assert(sock6._handle.unrefed(), false); + common.mustCall(() => assert(sock6._handle.isRefed(), false))); } // pipe { - const assert = makeAssert('unrefed() not working on pipe_wrap'); + const assert = makeAssert('isRefed() not working on pipe_wrap'); const Pipe = process.binding('pipe_wrap').Pipe; const handle = new Pipe(); - assert(Object.getPrototypeOf(handle).hasOwnProperty('unrefed'), true); - assert(handle.unrefed(), false); + assert(Object.getPrototypeOf(handle).hasOwnProperty('isRefed'), true); + assert(handle.isRefed(), true); handle.unref(); - assert(handle.unrefed(), true); + assert(handle.isRefed(), false); handle.ref(); - assert(handle.unrefed(), false); - handle.close(common.mustCall(() => assert(handle.unrefed(), true))); - handle.close(common.fail); - assert(handle.unrefed(), false); + assert(handle.isRefed(), true); + handle.close(common.mustCall(() => assert(handle.isRefed(), false))); } // tcp { - const assert = makeAssert('unrefed() not working on tcp_wrap'); + const assert = makeAssert('isRefed() not working on tcp_wrap'); const net = require('net'); const server = net.createServer(() => {}).listen(common.PORT); - assert(Object.getPrototypeOf(server._handle).hasOwnProperty('unrefed'), true); - assert(server._handle.unrefed(), false); + assert(Object.getPrototypeOf(server._handle).hasOwnProperty('isRefed'), true); + assert(server._handle.isRefed(), true); assert(server._unref, false); server.unref(); - assert(server._handle.unrefed(), true); + assert(server._handle.isRefed(), false); assert(server._unref, true); server.ref(); - assert(server._handle.unrefed(), false); + assert(server._handle.isRefed(), true); assert(server._unref, false); server._handle.close( - common.mustCall(() => assert(server._handle.unrefed(), true))); - server._handle.close(common.fail); - assert(server._handle.unrefed(), false); + common.mustCall(() => assert(server._handle.isRefed(), false))); } // timers { - const assert = makeAssert('unrefed() not working on timer_wrap'); + const assert = makeAssert('isRefed() not working on timer_wrap'); const timer = setTimeout(() => {}, 500); timer.unref(); - assert(Object.getPrototypeOf(timer._handle).hasOwnProperty('unrefed'), true); - assert(timer._handle.unrefed(), true); + assert(Object.getPrototypeOf(timer._handle).hasOwnProperty('isRefed'), true); + assert(timer._handle.isRefed(), false); timer.ref(); - assert(timer._handle.unrefed(), false); + assert(timer._handle.isRefed(), true); timer._handle.close( - common.mustCall(() => assert(timer._handle.unrefed(), true))); - timer._handle.close(common.fail); - assert(timer._handle.unrefed(), false); + common.mustCall(() => assert(timer._handle.isRefed(), false))); } From fe4837afcc17566a44a7744fb77c195e7b3bf2fd Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Mon, 9 May 2016 17:02:59 -0400 Subject: [PATCH 2/2] handle_wrap: IsRefed() -> HasRef() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename slightly to HasRef() at bnoordhuis’ request. Better reflects what we actually do for this check. Refs: https://github.com/nodejs/node/pull/6395 Refs: https://github.com/nodejs/node/pull/6204 Refs: https://github.com/nodejs/node/pull/6401 Refs: https://github.com/nodejs/node/pull/6382 Refs: https://github.com/nodejs/node/pull/6381 PR-URL: https://github.com/nodejs/node/pull/6546 Reviewed-By: Ben Noordhuis Reviewed-By: Trevor Norris --- src/handle_wrap.cc | 2 +- src/handle_wrap.h | 2 +- src/pipe_wrap.cc | 2 +- src/process_wrap.cc | 2 +- src/signal_wrap.cc | 2 +- src/tcp_wrap.cc | 2 +- src/timer_wrap.cc | 2 +- src/tty_wrap.cc | 2 +- src/udp_wrap.cc | 2 +- test/parallel/test-handle-wrap-isrefed-tty.js | 10 +-- test/parallel/test-handle-wrap-isrefed.js | 68 +++++++++---------- 11 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/handle_wrap.cc b/src/handle_wrap.cc index d28b6959c821..b3ef152a2ec1 100644 --- a/src/handle_wrap.cc +++ b/src/handle_wrap.cc @@ -33,7 +33,7 @@ void HandleWrap::Unref(const FunctionCallbackInfo& args) { } -void HandleWrap::IsRefed(const FunctionCallbackInfo& args) { +void HandleWrap::HasRef(const FunctionCallbackInfo& args) { HandleWrap* wrap = Unwrap(args.Holder()); args.GetReturnValue().Set(HasRef(wrap)); } diff --git a/src/handle_wrap.h b/src/handle_wrap.h index 506358c14056..49b36f80f951 100644 --- a/src/handle_wrap.h +++ b/src/handle_wrap.h @@ -35,7 +35,7 @@ class HandleWrap : public AsyncWrap { static void Close(const v8::FunctionCallbackInfo& args); static void Ref(const v8::FunctionCallbackInfo& args); static void Unref(const v8::FunctionCallbackInfo& args); - static void IsRefed(const v8::FunctionCallbackInfo& args); + static void HasRef(const v8::FunctionCallbackInfo& args); static inline bool IsAlive(const HandleWrap* wrap) { return wrap != nullptr && wrap->state_ != kClosed; diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc index 25080041c276..7be07de74b25 100644 --- a/src/pipe_wrap.cc +++ b/src/pipe_wrap.cc @@ -80,7 +80,7 @@ void PipeWrap::Initialize(Local target, env->SetProtoMethod(t, "close", HandleWrap::Close); env->SetProtoMethod(t, "unref", HandleWrap::Unref); env->SetProtoMethod(t, "ref", HandleWrap::Ref); - env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed); + env->SetProtoMethod(t, "hasRef", HandleWrap::HasRef); StreamWrap::AddMethods(env, t); diff --git a/src/process_wrap.cc b/src/process_wrap.cc index 0b7ad41b61a5..36c6cfe3adba 100644 --- a/src/process_wrap.cc +++ b/src/process_wrap.cc @@ -40,7 +40,7 @@ class ProcessWrap : public HandleWrap { env->SetProtoMethod(constructor, "ref", HandleWrap::Ref); env->SetProtoMethod(constructor, "unref", HandleWrap::Unref); - env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed); + env->SetProtoMethod(constructor, "hasRef", HandleWrap::HasRef); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Process"), constructor->GetFunction()); diff --git a/src/signal_wrap.cc b/src/signal_wrap.cc index ca5201d81a4b..ec052366f27f 100644 --- a/src/signal_wrap.cc +++ b/src/signal_wrap.cc @@ -32,7 +32,7 @@ class SignalWrap : public HandleWrap { env->SetProtoMethod(constructor, "close", HandleWrap::Close); env->SetProtoMethod(constructor, "ref", HandleWrap::Ref); env->SetProtoMethod(constructor, "unref", HandleWrap::Unref); - env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed); + env->SetProtoMethod(constructor, "hasRef", HandleWrap::HasRef); env->SetProtoMethod(constructor, "start", Start); env->SetProtoMethod(constructor, "stop", Stop); diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index 4e8617af2d0c..9e95bac0e252 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -87,7 +87,7 @@ void TCPWrap::Initialize(Local target, env->SetProtoMethod(t, "ref", HandleWrap::Ref); env->SetProtoMethod(t, "unref", HandleWrap::Unref); - env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed); + env->SetProtoMethod(t, "hasRef", HandleWrap::HasRef); StreamWrap::AddMethods(env, t, StreamBase::kFlagHasWritev); diff --git a/src/timer_wrap.cc b/src/timer_wrap.cc index 4a1cd3716a90..7f6c0029bf33 100644 --- a/src/timer_wrap.cc +++ b/src/timer_wrap.cc @@ -39,7 +39,7 @@ class TimerWrap : public HandleWrap { env->SetProtoMethod(constructor, "close", HandleWrap::Close); env->SetProtoMethod(constructor, "ref", HandleWrap::Ref); env->SetProtoMethod(constructor, "unref", HandleWrap::Unref); - env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed); + env->SetProtoMethod(constructor, "hasRef", HandleWrap::HasRef); env->SetProtoMethod(constructor, "start", Start); env->SetProtoMethod(constructor, "stop", Stop); diff --git a/src/tty_wrap.cc b/src/tty_wrap.cc index 5a1d333c3d2b..6e91dbcd748c 100644 --- a/src/tty_wrap.cc +++ b/src/tty_wrap.cc @@ -36,7 +36,7 @@ void TTYWrap::Initialize(Local target, env->SetProtoMethod(t, "close", HandleWrap::Close); env->SetProtoMethod(t, "unref", HandleWrap::Unref); - env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed); + env->SetProtoMethod(t, "hasRef", HandleWrap::HasRef); StreamWrap::AddMethods(env, t, StreamBase::kFlagNoShutdown); diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index ac087f395ace..baa8b888cf32 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -108,7 +108,7 @@ void UDPWrap::Initialize(Local target, env->SetProtoMethod(t, "ref", HandleWrap::Ref); env->SetProtoMethod(t, "unref", HandleWrap::Unref); - env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed); + env->SetProtoMethod(t, "hasRef", HandleWrap::HasRef); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "UDP"), t->GetFunction()); env->set_udp_constructor_function(t->GetFunction()); diff --git a/test/parallel/test-handle-wrap-isrefed-tty.js b/test/parallel/test-handle-wrap-isrefed-tty.js index 972b34e0dc07..ad312be1f778 100644 --- a/test/parallel/test-handle-wrap-isrefed-tty.js +++ b/test/parallel/test-handle-wrap-isrefed-tty.js @@ -9,18 +9,18 @@ function makeAssert(message) { strictEqual(actual, expected, message); }; } -const assert = makeAssert('isRefed() not working on tty_wrap'); +const assert = makeAssert('hasRef() not working on tty_wrap'); if (process.argv[2] === 'child') { // Test tty_wrap in piped child to guarentee stdin being a TTY. const ReadStream = require('tty').ReadStream; const tty = new ReadStream(0); - assert(Object.getPrototypeOf(tty._handle).hasOwnProperty('isRefed'), true); - assert(tty._handle.isRefed(), true); + assert(Object.getPrototypeOf(tty._handle).hasOwnProperty('hasRef'), true); + assert(tty._handle.hasRef(), true); tty.unref(); - assert(tty._handle.isRefed(), false); + assert(tty._handle.hasRef(), false); tty._handle.close( - common.mustCall(() => assert(tty._handle.isRefed(), false))); + common.mustCall(() => assert(tty._handle.hasRef(), false))); return; } diff --git a/test/parallel/test-handle-wrap-isrefed.js b/test/parallel/test-handle-wrap-isrefed.js index e4036e75f6b9..a308ab6944a3 100644 --- a/test/parallel/test-handle-wrap-isrefed.js +++ b/test/parallel/test-handle-wrap-isrefed.js @@ -12,90 +12,90 @@ function makeAssert(message) { // child_process { - const assert = makeAssert('isRefed() not working on process_wrap'); + const assert = makeAssert('hasRef() not working on process_wrap'); const spawn = require('child_process').spawn; const cmd = common.isWindows ? 'rundll32' : 'ls'; const cp = spawn(cmd); - assert(Object.getPrototypeOf(cp._handle).hasOwnProperty('isRefed'), true); - assert(cp._handle.isRefed(), true); + assert(Object.getPrototypeOf(cp._handle).hasOwnProperty('hasRef'), true); + assert(cp._handle.hasRef(), true); cp.unref(); - assert(cp._handle.isRefed(), false); + assert(cp._handle.hasRef(), false); cp.ref(); - assert(cp._handle.isRefed(), true); - cp._handle.close(common.mustCall(() => assert(cp._handle.isRefed(), false))); + assert(cp._handle.hasRef(), true); + cp._handle.close(common.mustCall(() => assert(cp._handle.hasRef(), false))); } // dgram { - const assert = makeAssert('isRefed() not working on udp_wrap'); + const assert = makeAssert('hasRef() not working on udp_wrap'); const dgram = require('dgram'); const sock4 = dgram.createSocket('udp4'); - assert(Object.getPrototypeOf(sock4._handle).hasOwnProperty('isRefed'), true); - assert(sock4._handle.isRefed(), true); + assert(Object.getPrototypeOf(sock4._handle).hasOwnProperty('hasRef'), true); + assert(sock4._handle.hasRef(), true); sock4.unref(); - assert(sock4._handle.isRefed(), false); + assert(sock4._handle.hasRef(), false); sock4.ref(); - assert(sock4._handle.isRefed(), true); + assert(sock4._handle.hasRef(), true); sock4._handle.close( - common.mustCall(() => assert(sock4._handle.isRefed(), false))); + common.mustCall(() => assert(sock4._handle.hasRef(), false))); const sock6 = dgram.createSocket('udp6'); - assert(Object.getPrototypeOf(sock6._handle).hasOwnProperty('isRefed'), true); - assert(sock6._handle.isRefed(), true); + assert(Object.getPrototypeOf(sock6._handle).hasOwnProperty('hasRef'), true); + assert(sock6._handle.hasRef(), true); sock6.unref(); - assert(sock6._handle.isRefed(), false); + assert(sock6._handle.hasRef(), false); sock6.ref(); - assert(sock6._handle.isRefed(), true); + assert(sock6._handle.hasRef(), true); sock6._handle.close( - common.mustCall(() => assert(sock6._handle.isRefed(), false))); + common.mustCall(() => assert(sock6._handle.hasRef(), false))); } // pipe { - const assert = makeAssert('isRefed() not working on pipe_wrap'); + const assert = makeAssert('hasRef() not working on pipe_wrap'); const Pipe = process.binding('pipe_wrap').Pipe; const handle = new Pipe(); - assert(Object.getPrototypeOf(handle).hasOwnProperty('isRefed'), true); - assert(handle.isRefed(), true); + assert(Object.getPrototypeOf(handle).hasOwnProperty('hasRef'), true); + assert(handle.hasRef(), true); handle.unref(); - assert(handle.isRefed(), false); + assert(handle.hasRef(), false); handle.ref(); - assert(handle.isRefed(), true); - handle.close(common.mustCall(() => assert(handle.isRefed(), false))); + assert(handle.hasRef(), true); + handle.close(common.mustCall(() => assert(handle.hasRef(), false))); } // tcp { - const assert = makeAssert('isRefed() not working on tcp_wrap'); + const assert = makeAssert('hasRef() not working on tcp_wrap'); const net = require('net'); const server = net.createServer(() => {}).listen(common.PORT); - assert(Object.getPrototypeOf(server._handle).hasOwnProperty('isRefed'), true); - assert(server._handle.isRefed(), true); + assert(Object.getPrototypeOf(server._handle).hasOwnProperty('hasRef'), true); + assert(server._handle.hasRef(), true); assert(server._unref, false); server.unref(); - assert(server._handle.isRefed(), false); + assert(server._handle.hasRef(), false); assert(server._unref, true); server.ref(); - assert(server._handle.isRefed(), true); + assert(server._handle.hasRef(), true); assert(server._unref, false); server._handle.close( - common.mustCall(() => assert(server._handle.isRefed(), false))); + common.mustCall(() => assert(server._handle.hasRef(), false))); } // timers { - const assert = makeAssert('isRefed() not working on timer_wrap'); + const assert = makeAssert('hasRef() not working on timer_wrap'); const timer = setTimeout(() => {}, 500); timer.unref(); - assert(Object.getPrototypeOf(timer._handle).hasOwnProperty('isRefed'), true); - assert(timer._handle.isRefed(), false); + assert(Object.getPrototypeOf(timer._handle).hasOwnProperty('hasRef'), true); + assert(timer._handle.hasRef(), false); timer.ref(); - assert(timer._handle.isRefed(), true); + assert(timer._handle.hasRef(), true); timer._handle.close( - common.mustCall(() => assert(timer._handle.isRefed(), false))); + common.mustCall(() => assert(timer._handle.hasRef(), false))); }