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>
This commit is contained in:
parent
ddcc00bc1e
commit
d3f174faab
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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:
|
||||
|
@ -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());
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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(),
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user