diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-03-07 13:48:52 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-03-11 18:20:38 +0100 |
commit | d3f174faab55662226ced53bef6bb2040352a825 (patch) | |
tree | 06724215b97d8efa9ce0538a5113b1bdb2766827 /src | |
parent | ddcc00bc1e8cc5815c942e1c4713ce92e7a27d40 (diff) | |
download | node-new-d3f174faab55662226ced53bef6bb2040352a825.tar.gz |
src: add convenience ctor for async trigger id scope
PR-URL: https://github.com/nodejs/node/pull/19204
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/async_wrap-inl.h | 7 | ||||
-rw-r--r-- | src/async_wrap.cc | 3 | ||||
-rw-r--r-- | src/env-inl.h | 3 | ||||
-rw-r--r-- | src/env.h | 1 | ||||
-rw-r--r-- | src/pipe_wrap.cc | 3 | ||||
-rw-r--r-- | src/stream_base-inl.h | 9 | ||||
-rw-r--r-- | src/tcp_wrap.cc | 9 | ||||
-rw-r--r-- | src/udp_wrap.cc | 6 |
8 files changed, 21 insertions, 20 deletions
diff --git a/src/async_wrap-inl.h b/src/async_wrap-inl.h index cc6377d82a..21b1f9cee9 100644 --- a/src/async_wrap-inl.h +++ b/src/async_wrap-inl.h @@ -64,6 +64,13 @@ inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback( return MakeCallback(cb_v.As<v8::Function>(), argc, argv); } + +// Defined here to avoid a circular dependency with env-inl.h. +inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope + ::DefaultTriggerAsyncIdScope(AsyncWrap* async_wrap) + : DefaultTriggerAsyncIdScope(async_wrap->env(), + async_wrap->get_async_id()) {} + } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS diff --git a/src/async_wrap.cc b/src/async_wrap.cc index 239e607b05..b6776364a5 100644 --- a/src/async_wrap.cc +++ b/src/async_wrap.cc @@ -312,8 +312,7 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise, parent_wrap = PromiseWrap::New(env, parent_promise, nullptr, true); } - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - env, parent_wrap->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent_wrap); wrap = PromiseWrap::New(env, promise, parent_wrap, silent); } else { wrap = PromiseWrap::New(env, promise, nullptr, silent); diff --git a/src/env-inl.h b/src/env-inl.h index 8883903cb1..31f2af4024 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -179,6 +179,9 @@ inline void Environment::AsyncHooks::clear_async_id_stack() { fields_[kStackLength] = 0; } +// The DefaultTriggerAsyncIdScope(AsyncWrap*) constructor is defined in +// async_wrap-inl.h to avoid a circular dependency. + inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope ::DefaultTriggerAsyncIdScope(Environment* env, double default_trigger_async_id) @@ -431,6 +431,7 @@ class Environment { DefaultTriggerAsyncIdScope() = delete; explicit DefaultTriggerAsyncIdScope(Environment* env, double init_trigger_async_id); + explicit DefaultTriggerAsyncIdScope(AsyncWrap* async_wrap); ~DefaultTriggerAsyncIdScope(); private: diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc index 016ce480b6..14ac671b92 100644 --- a/src/pipe_wrap.cc +++ b/src/pipe_wrap.cc @@ -54,8 +54,7 @@ Local<Object> PipeWrap::Instantiate(Environment* env, AsyncWrap* parent, PipeWrap::SocketType type) { EscapableHandleScope handle_scope(env->isolate()); - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(env, - parent->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent); CHECK_EQ(false, env->pipe_constructor_template().IsEmpty()); Local<Function> constructor = env->pipe_constructor_template()->GetFunction(); CHECK_EQ(false, constructor.IsEmpty()); diff --git a/src/stream_base-inl.h b/src/stream_base-inl.h index 81adf7a866..1534dcd1d5 100644 --- a/src/stream_base-inl.h +++ b/src/stream_base-inl.h @@ -164,8 +164,7 @@ inline int StreamBase::Shutdown(v8::Local<v8::Object> req_wrap_obj) { ->NewInstance(env->context()).ToLocalChecked(); } - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - env, GetAsyncWrap()->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap()); ShutdownWrap* req_wrap = CreateShutdownWrap(req_wrap_obj); int err = DoShutdown(req_wrap); @@ -202,8 +201,7 @@ inline StreamWriteResult StreamBase::Write( ->NewInstance(env->context()).ToLocalChecked(); } - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - env, GetAsyncWrap()->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap()); WriteWrap* req_wrap = CreateWriteWrap(req_wrap_obj); err = DoWrite(req_wrap, bufs, count, send_handle); @@ -383,8 +381,7 @@ void StreamBase::JSMethod(const FunctionCallbackInfo<Value>& args) { if (!wrap->IsAlive()) return args.GetReturnValue().Set(UV_EINVAL); - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - handle->env(), handle->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(handle); args.GetReturnValue().Set((wrap->*Method)(args)); } diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index 61b08217b8..cd6ed3cef0 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -57,8 +57,7 @@ Local<Object> TCPWrap::Instantiate(Environment* env, AsyncWrap* parent, TCPWrap::SocketType type) { EscapableHandleScope handle_scope(env->isolate()); - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - env, parent->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent); CHECK_EQ(env->tcp_constructor_template().IsEmpty(), false); Local<Function> constructor = env->tcp_constructor_template()->GetFunction(); CHECK_EQ(constructor.IsEmpty(), false); @@ -289,8 +288,7 @@ void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args) { int err = uv_ip4_addr(*ip_address, port, &addr); if (err == 0) { - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - env, wrap->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap); ConnectWrap* req_wrap = new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP); err = uv_tcp_connect(req_wrap->req(), @@ -326,8 +324,7 @@ void TCPWrap::Connect6(const FunctionCallbackInfo<Value>& args) { int err = uv_ip6_addr(*ip_address, port, &addr); if (err == 0) { - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - env, wrap->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap); ConnectWrap* req_wrap = new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP); err = uv_tcp_connect(req_wrap->req(), diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index 27be93abd0..e7d97dc484 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -359,8 +359,7 @@ void UDPWrap::DoSend(const FunctionCallbackInfo<Value>& args, int family) { SendWrap* req_wrap; { - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - env, wrap->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap); req_wrap = new SendWrap(env, req_wrap_obj, have_callback); } size_t msg_size = 0; @@ -511,8 +510,7 @@ Local<Object> UDPWrap::Instantiate(Environment* env, AsyncWrap* parent, UDPWrap::SocketType type) { EscapableHandleScope scope(env->isolate()); - AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope( - env, parent->get_async_id()); + AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent); // If this assert fires then Initialize hasn't been called yet. CHECK_EQ(env->udp_constructor_function().IsEmpty(), false); |