FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
nan/test/cpp/makecallback.cpp at main · nodejs/nan · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
nodejs
/
nan
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
529
Star
3.4k
Code
Issues
57
Pull requests
15
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
nan
/
test
/
cpp
/
makecallback.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
71 lines (55 loc) · 1.99 KB
Breadcrumbs
nan
/
test
/
cpp
/
makecallback.cpp
Copy path
File metadata and controls
71 lines (55 loc) · 1.99 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
********************************************************************
* NAN - Native Abstractions for Node.js
*
* Copyright (c) 2018 NAN contributors
*
* MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
*******************************************************************
*/
#
include
<
nan.h
>
using
namespace
Nan
;
//
NOLINT(build/namespaces)
class
MyObject
:
public
node
::ObjectWrap {
public:
static
NAN_MODULE_INIT
(Init);
private:
explicit
MyObject
(v8::Local<v8::Object> resource);
~MyObject
();
AsyncResource async_resource;
static
NAN_METHOD
(New);
static
NAN_METHOD
(CallEmit);
static
Persistent<v8::Function> constructor;
};
Persistent<v8::Function> MyObject::constructor;
MyObject::MyObject
(v8::Local<v8::Object> resource)
: async_resource(
"
nan:test:makecallback
"
, resource) {
}
MyObject::~MyObject
() {
}
NAN_MODULE_INIT
(MyObject::Init) {
//
Prepare constructor template
v8::Local<v8::FunctionTemplate> tpl = Nan::New<v8::FunctionTemplate>(New);
tpl->
SetClassName
(Nan::New<v8::String>(
"
MyObject
"
).
ToLocalChecked
());
tpl->
InstanceTemplate
()->
SetInternalFieldCount
(
1
);
SetPrototypeMethod
(tpl,
"
call_emit
"
, CallEmit);
v8::Local<v8::Function> function =
GetFunction
(tpl).
ToLocalChecked
();
constructor.
Reset
(function);
Set
(target,
Nan::New
(
"
MyObject
"
).
ToLocalChecked
(), function);
}
NAN_METHOD
(MyObject::New) {
if
(info.
IsConstructCall
()) {
MyObject* obj =
new
MyObject
(info.
This
());
obj->
Wrap
(info.
This
());
info.
GetReturnValue
().
Set
(info.
This
());
}
else
{
v8::Local<v8::Function> cons = Nan::New<v8::Function>(constructor);
info.
GetReturnValue
().
Set
(
Nan::NewInstance
(cons).
ToLocalChecked
());
}
}
NAN_METHOD
(MyObject::CallEmit) {
v8::Local<v8::Value> argv[
1
] = {
Nan::New
(
"
event
"
).
ToLocalChecked
(),
//
event name
};
MyObject* obj = node::ObjectWrap::Unwrap<MyObject>(info.
This
());
obj->
async_resource
.
runInAsyncScope
(info.
This
(),
"
emit
"
,
1
, argv);
info.
GetReturnValue
().
SetUndefined
();
}
NODE_MODULE
(makecallback, MyObject::Init)
Back
|
FazBrowse Home
|
New Git URL