mirror of
https://github.com/nodejs/node.git
synced 2026-11-09 15:11:11 -05:00
node-api: add napi_create_external_sharedarraybuffer
Creates a SharedArrayBuffer from externally managed memory. Fixes: https://github.com/nodejs/node/issues/62259 PR-URL: https://github.com/nodejs/node/pull/62623 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Vladimir Morozov <vmorozov@microsoft.com> Reviewed-By: Robert Nagy <ronagy@icloud.com>
This commit is contained in:
1 parent
e9e73f56fa
commit
0e83bae7cb
7 files changed
+132
-2
No files matched your search
@@ -58,6 +58,30 @@ static napi_value newExternalBuffer(napi_env env, napi_callback_info info) {
|
||||
return theBuffer;
|
||||
}
|
||||
|
||||
static char externalSharedArrayBufferData[1];
|
||||
|
||||
static void freeExternalSharedArrayBuffer(void* data, void* hint) {
|
||||
(void)hint;
|
||||
NODE_API_BASIC_ASSERT_RETURN_VOID(
|
||||
data == (void*)externalSharedArrayBufferData,
|
||||
"SharedArrayBuffer points to wrong data");
|
||||
deleterCallCount++;
|
||||
}
|
||||
|
||||
static napi_value newExternalSharedArrayBuffer(napi_env env,
|
||||
napi_callback_info info) {
|
||||
napi_value sab;
|
||||
NODE_API_CALL(
|
||||
env,
|
||||
node_api_create_external_sharedarraybuffer(env,
|
||||
externalSharedArrayBufferData,
|
||||
1,
|
||||
freeExternalSharedArrayBuffer,
|
||||
NULL,
|
||||
&sab));
|
||||
return sab;
|
||||
}
|
||||
|
||||
static napi_value getDeleterCallCount(napi_env env, napi_callback_info info) {
|
||||
napi_value callCount;
|
||||
NODE_API_CALL(env, napi_create_int32(env, deleterCallCount, &callCount));
|
||||
@@ -171,6 +195,8 @@ static napi_value Init(napi_env env, napi_value exports) {
|
||||
napi_property_descriptor methods[] = {
|
||||
DECLARE_NODE_API_PROPERTY("newBuffer", newBuffer),
|
||||
DECLARE_NODE_API_PROPERTY("newExternalBuffer", newExternalBuffer),
|
||||
DECLARE_NODE_API_PROPERTY("newExternalSharedArrayBuffer",
|
||||
newExternalSharedArrayBuffer),
|
||||
DECLARE_NODE_API_PROPERTY("getDeleterCallCount", getDeleterCallCount),
|
||||
DECLARE_NODE_API_PROPERTY("copyBuffer", copyBuffer),
|
||||
DECLARE_NODE_API_PROPERTY("bufferHasInstance", bufferHasInstance),
|
||||
|
||||
Reference in new issue
Block a user