| 583 | // === AsyncResource =========================================================== |
| 584 | |
| 585 | class 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 |
nothing calls this directly
no outgoing calls
no test coverage detected