MCPcopy Create free account
hub / github.com/nodejs/nan / AsyncResource

Class AsyncResource

nan.h:585–668  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

583// === AsyncResource ===========================================================
584
585class AsyncResource {
586 public:
587 AsyncResource(
588 v8::Local<v8::String> name
589 , v8::Local<v8::Object> resource = New<v8::Object>()) {
590#if NODE_MODULE_VERSION >= NODE_9_0_MODULE_VERSION
591 v8::Isolate* isolate = v8::Isolate::GetCurrent();
592
593 if (resource.IsEmpty()) {
594 resource = New<v8::Object>();
595 }
596
597 context = node::EmitAsyncInit(isolate, resource, name);
598#endif
599 }
600
601 AsyncResource(
602 const char* name
603 , v8::Local<v8::Object> resource = New<v8::Object>()) {
604#if NODE_MODULE_VERSION >= NODE_9_0_MODULE_VERSION
605 v8::Isolate* isolate = v8::Isolate::GetCurrent();
606
607 if (resource.IsEmpty()) {
608 resource = New<v8::Object>();
609 }
610
611 v8::Local<v8::String> name_string =
612 New<v8::String>(name).ToLocalChecked();
613 context = node::EmitAsyncInit(isolate, resource, name_string);
614#endif
615 }
616
617 ~AsyncResource() {
618#if NODE_MODULE_VERSION >= NODE_9_0_MODULE_VERSION
619 v8::Isolate* isolate = v8::Isolate::GetCurrent();
620 node::EmitAsyncDestroy(isolate, context);
621#endif
622 }
623
624 inline MaybeLocal<v8::Value> runInAsyncScope(
625 v8::Local<v8::Object> target
626 , v8::Local<v8::Function> func
627 , int argc
628 , v8::Local<v8::Value>* argv) {
629#if NODE_MODULE_VERSION < NODE_9_0_MODULE_VERSION
630 return MakeCallback(target, func, argc, argv);
631#else
632 return node::MakeCallback(
633 v8::Isolate::GetCurrent(), target, func, argc, argv, context);
634#endif
635 }
636
637 inline MaybeLocal<v8::Value> runInAsyncScope(
638 v8::Local<v8::Object> target
639 , v8::Local<v8::String> symbol
640 , int argc
641 , v8::Local<v8::Value>* argv) {
642#if NODE_MODULE_VERSION < NODE_9_0_MODULE_VERSION

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected