Skip to content

Commit 49481d0

Browse files
addaleaxMylesBorins
authored andcommitted
src: add convenience ctor for async trigger id scope
PR-URL: #19204 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
1 parent 71b1c7f commit 49481d0

8 files changed

+21
-20
lines changed

src/async_wrap-inl.h

+7
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback(
6464
return MakeCallback(cb_v.As<v8::Function>(), argc, argv);
6565
}
6666

67+
68+
// Defined here to avoid a circular dependency with env-inl.h.
69+
inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope
70+
::DefaultTriggerAsyncIdScope(AsyncWrap* async_wrap)
71+
: DefaultTriggerAsyncIdScope(async_wrap->env(),
72+
async_wrap->get_async_id()) {}
73+
6774
} // namespace node
6875

6976
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS

src/async_wrap.cc

+1-2
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,7 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
314314
parent_wrap = PromiseWrap::New(env, parent_promise, nullptr, true);
315315
}
316316

317-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
318-
env, parent_wrap->get_async_id());
317+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent_wrap);
319318
wrap = PromiseWrap::New(env, promise, parent_wrap, silent);
320319
} else {
321320
wrap = PromiseWrap::New(env, promise, nullptr, silent);

src/env-inl.h

+3
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,9 @@ inline void Environment::AsyncHooks::clear_async_id_stack() {
177177
fields_[kStackLength] = 0;
178178
}
179179

180+
// The DefaultTriggerAsyncIdScope(AsyncWrap*) constructor is defined in
181+
// async_wrap-inl.h to avoid a circular dependency.
182+
180183
inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope
181184
::DefaultTriggerAsyncIdScope(Environment* env,
182185
double default_trigger_async_id)

src/env.h

+1
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ class Environment {
434434
DefaultTriggerAsyncIdScope() = delete;
435435
explicit DefaultTriggerAsyncIdScope(Environment* env,
436436
double init_trigger_async_id);
437+
explicit DefaultTriggerAsyncIdScope(AsyncWrap* async_wrap);
437438
~DefaultTriggerAsyncIdScope();
438439

439440
private:

src/pipe_wrap.cc

+1-2
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ Local<Object> PipeWrap::Instantiate(Environment* env,
5454
AsyncWrap* parent,
5555
PipeWrap::SocketType type) {
5656
EscapableHandleScope handle_scope(env->isolate());
57-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(env,
58-
parent->get_async_id());
57+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
5958
CHECK_EQ(false, env->pipe_constructor_template().IsEmpty());
6059
Local<Function> constructor = env->pipe_constructor_template()->GetFunction();
6160
CHECK_EQ(false, constructor.IsEmpty());

src/stream_base-inl.h

+3-6
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,7 @@ inline int StreamBase::Shutdown(v8::Local<v8::Object> req_wrap_obj) {
164164
->NewInstance(env->context()).ToLocalChecked();
165165
}
166166

167-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
168-
env, GetAsyncWrap()->get_async_id());
167+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap());
169168
ShutdownWrap* req_wrap = CreateShutdownWrap(req_wrap_obj);
170169
int err = DoShutdown(req_wrap);
171170

@@ -202,8 +201,7 @@ inline StreamWriteResult StreamBase::Write(
202201
->NewInstance(env->context()).ToLocalChecked();
203202
}
204203

205-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
206-
env, GetAsyncWrap()->get_async_id());
204+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap());
207205
WriteWrap* req_wrap = CreateWriteWrap(req_wrap_obj);
208206

209207
err = DoWrite(req_wrap, bufs, count, send_handle);
@@ -383,8 +381,7 @@ void StreamBase::JSMethod(const FunctionCallbackInfo<Value>& args) {
383381
if (!wrap->IsAlive())
384382
return args.GetReturnValue().Set(UV_EINVAL);
385383

386-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
387-
handle->env(), handle->get_async_id());
384+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(handle);
388385
args.GetReturnValue().Set((wrap->*Method)(args));
389386
}
390387

src/tcp_wrap.cc

+3-6
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ Local<Object> TCPWrap::Instantiate(Environment* env,
5757
AsyncWrap* parent,
5858
TCPWrap::SocketType type) {
5959
EscapableHandleScope handle_scope(env->isolate());
60-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
61-
env, parent->get_async_id());
60+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
6261
CHECK_EQ(env->tcp_constructor_template().IsEmpty(), false);
6362
Local<Function> constructor = env->tcp_constructor_template()->GetFunction();
6463
CHECK_EQ(constructor.IsEmpty(), false);
@@ -289,8 +288,7 @@ void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args) {
289288
int err = uv_ip4_addr(*ip_address, port, &addr);
290289

291290
if (err == 0) {
292-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
293-
env, wrap->get_async_id());
291+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap);
294292
ConnectWrap* req_wrap =
295293
new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP);
296294
err = uv_tcp_connect(req_wrap->req(),
@@ -326,8 +324,7 @@ void TCPWrap::Connect6(const FunctionCallbackInfo<Value>& args) {
326324
int err = uv_ip6_addr(*ip_address, port, &addr);
327325

328326
if (err == 0) {
329-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
330-
env, wrap->get_async_id());
327+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap);
331328
ConnectWrap* req_wrap =
332329
new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP);
333330
err = uv_tcp_connect(req_wrap->req(),

src/udp_wrap.cc

+2-4
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,7 @@ void UDPWrap::DoSend(const FunctionCallbackInfo<Value>& args, int family) {
355355

356356
SendWrap* req_wrap;
357357
{
358-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
359-
env, wrap->get_async_id());
358+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap);
360359
req_wrap = new SendWrap(env, req_wrap_obj, have_callback);
361360
}
362361
size_t msg_size = 0;
@@ -507,8 +506,7 @@ Local<Object> UDPWrap::Instantiate(Environment* env,
507506
AsyncWrap* parent,
508507
UDPWrap::SocketType type) {
509508
EscapableHandleScope scope(env->isolate());
510-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
511-
env, parent->get_async_id());
509+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
512510

513511
// If this assert fires then Initialize hasn't been called yet.
514512
CHECK_EQ(env->udp_constructor_function().IsEmpty(), false);

0 commit comments

Comments
 (0)