Skip to content

Commit b011308

Browse files
addaleaxMayaLekova
authored andcommitted
src: add convenience ctor for async trigger id scope
PR-URL: nodejs#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 f9bf81e commit b011308

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
@@ -312,8 +312,7 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
312312
parent_wrap = PromiseWrap::New(env, parent_promise, nullptr, true);
313313
}
314314

315-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
316-
env, parent_wrap->get_async_id());
315+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent_wrap);
317316
wrap = PromiseWrap::New(env, promise, parent_wrap, silent);
318317
} else {
319318
wrap = PromiseWrap::New(env, promise, nullptr, silent);

src/env-inl.h

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

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

src/env.h

+1
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@ class Environment {
431431
DefaultTriggerAsyncIdScope() = delete;
432432
explicit DefaultTriggerAsyncIdScope(Environment* env,
433433
double init_trigger_async_id);
434+
explicit DefaultTriggerAsyncIdScope(AsyncWrap* async_wrap);
434435
~DefaultTriggerAsyncIdScope();
435436

436437
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
@@ -359,8 +359,7 @@ void UDPWrap::DoSend(const FunctionCallbackInfo<Value>& args, int family) {
359359

360360
SendWrap* req_wrap;
361361
{
362-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
363-
env, wrap->get_async_id());
362+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap);
364363
req_wrap = new SendWrap(env, req_wrap_obj, have_callback);
365364
}
366365
size_t msg_size = 0;
@@ -511,8 +510,7 @@ Local<Object> UDPWrap::Instantiate(Environment* env,
511510
AsyncWrap* parent,
512511
UDPWrap::SocketType type) {
513512
EscapableHandleScope scope(env->isolate());
514-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
515-
env, parent->get_async_id());
513+
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
516514

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

0 commit comments

Comments
 (0)