FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
nan/test/cpp/weak.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
/
weak.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
62 lines (52 loc) · 1.97 KB
Breadcrumbs
nan
/
test
/
cpp
/
weak.cpp
Copy path
File metadata and controls
62 lines (52 loc) · 1.97 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
/*
********************************************************************
* 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)
static
AsyncResource* async_resource;
static
Persistent<v8::Function> cb;
void
weakCallback
(
const
WeakCallbackInfo<
int
> &data) {
//
NOLINT(runtime/references)
HandleScope scope;
int
*parameter = data.
GetParameter
();
v8::Local<v8::Value> val =
New
(*parameter);
async_resource->
runInAsyncScope
(
GetCurrentContext
()->
Global
(),
New
(cb),
1
, &val);
delete
async_resource;
delete
parameter;
}
v8::Local<v8::String>
wrap
(v8::Local<v8::Function> func) {
EscapableHandleScope scope;
v8::Local<v8::String> lstring = New<v8::String>(
"
result
"
).
ToLocalChecked
();
int
*parameter =
new
int
(
42
);
Persistent<v8::Function>
persistent
(func);
persistent.
SetWeak
(parameter, weakCallback, WeakCallbackType::
kParameter
);
assert
(persistent.
IsWeak
());
return
scope.
Escape
(lstring);
}
NAN_METHOD
(Hustle) {
async_resource =
new
AsyncResource
(
"
nan:test:weak
"
);
cb.
Reset
(To<v8::Function>(info[
1
]).
ToLocalChecked
());
info.
GetReturnValue
().
Set
(
wrap
(To<v8::Function>(info[
0
]).
ToLocalChecked
()));
}
inline
void
WeakExternalCallback
(
const
WeakCallbackInfo<
void
>&) {}
NAN_METHOD
(WeakExternal) {
void
* baton = &baton;
//
Actual value doesn't really matter.
Persistent<v8::External>
external
(New<v8::External>(baton));
external.
SetWeak
(baton, WeakExternalCallback, WeakCallbackType::
kParameter
);
}
NAN_MODULE_INIT
(Init) {
Set
(target
, New<v8::String>(
"
hustle
"
).
ToLocalChecked
()
,
GetFunction
(New<v8::FunctionTemplate>(Hustle)).
ToLocalChecked
()
);
Set
(target
, New<v8::String>(
"
weakExternal
"
).
ToLocalChecked
()
,
GetFunction
(New<v8::FunctionTemplate>(WeakExternal)).
ToLocalChecked
()
);
}
NODE_MODULE
(weak, Init)
Back
|
FazBrowse Home
|
New Git URL