@@ -7,17 +7,23 @@ static const char theText[] =
7
7
"Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
8
8
9
9
static int deleterCallCount = 0;
10
- static void deleteTheText(napi_env env, void* data, void* finalize_hint) {
11
- NODE_API_ASSERT_RETURN_VOID(
12
- env, data != NULL && strcmp(data, theText) == 0, "invalid data");
10
+
11
+ static void deleteTheText(node_api_basic_env env,
12
+ void* data,
13
+ void* finalize_hint) {
14
+ NODE_API_BASIC_ASSERT_RETURN_VOID(data != NULL && strcmp(data, theText) == 0,
15
+ "invalid data");
16
+
13
17
(void)finalize_hint;
14
18
free(data);
15
19
deleterCallCount++;
16
20
}
17
21
18
- static void noopDeleter(napi_env env, void* data, void* finalize_hint) {
19
- NODE_API_ASSERT_RETURN_VOID(
20
- env, data != NULL && strcmp(data, theText) == 0, "invalid data");
22
+ static void noopDeleter(node_api_basic_env env,
23
+ void* data,
24
+ void* finalize_hint) {
25
+ NODE_API_BASIC_ASSERT_RETURN_VOID(data != NULL && strcmp(data, theText) == 0,
26
+ "invalid data");
21
27
(void)finalize_hint;
22
28
deleterCallCount++;
23
29
}
@@ -42,9 +48,12 @@ static napi_value newExternalBuffer(napi_env env, napi_callback_info info) {
42
48
NODE_API_ASSERT(
43
49
env, theCopy, "Failed to copy static text for newExternalBuffer");
44
50
NODE_API_CALL(env,
45
- napi_create_external_buffer(
46
- env, sizeof(theText), theCopy, deleteTheText,
47
- NULL /* finalize_hint */, &theBuffer));
51
+ napi_create_external_buffer(env,
52
+ sizeof(theText),
53
+ theCopy,
54
+ deleteTheText,
55
+ NULL /* finalize_hint */,
56
+ &theBuffer));
48
57
49
58
return theBuffer;
50
59
}
@@ -101,9 +110,12 @@ static napi_value bufferInfo(napi_env env, napi_callback_info info) {
101
110
static napi_value staticBuffer(napi_env env, napi_callback_info info) {
102
111
napi_value theBuffer;
103
112
NODE_API_CALL(env,
104
- napi_create_external_buffer(
105
- env, sizeof(theText), (void*)theText, noopDeleter,
106
- NULL /* finalize_hint */, &theBuffer));
113
+ napi_create_external_buffer(env,
114
+ sizeof(theText),
115
+ (void*)theText,
116
+ noopDeleter,
117
+ NULL /* finalize_hint */,
118
+ &theBuffer));
107
119
return theBuffer;
108
120
}
109
121
@@ -123,6 +135,31 @@ static napi_value invalidObjectAsBuffer(napi_env env, napi_callback_info info) {
123
135
return notTheBuffer;
124
136
}
125
137
138
+ static napi_value bufferFromArrayBuffer(napi_env env, napi_callback_info info) {
139
+ napi_status status;
140
+ napi_value arraybuffer;
141
+ napi_value buffer;
142
+ size_t byte_length = 1024;
143
+ void* data = NULL;
144
+ size_t buffer_length = 0;
145
+ void* buffer_data = NULL;
146
+
147
+ status = napi_create_arraybuffer(env, byte_length, &data, &arraybuffer);
148
+ NODE_API_ASSERT(env, status == napi_ok, "Failed to create arraybuffer");
149
+
150
+ status = node_api_create_buffer_from_arraybuffer(
151
+ env, arraybuffer, 0, byte_length, &buffer);
152
+ NODE_API_ASSERT(
153
+ env, status == napi_ok, "Failed to create buffer from arraybuffer");
154
+
155
+ status = napi_get_buffer_info(env, buffer, &buffer_data, &buffer_length);
156
+ NODE_API_ASSERT(env, status == napi_ok, "Failed to get buffer info");
157
+
158
+ NODE_API_ASSERT(env, buffer_length == byte_length, "Buffer length mismatch");
159
+
160
+ return buffer;
161
+ }
162
+
126
163
static napi_value Init(napi_env env, napi_value exports) {
127
164
napi_value theValue;
128
165
@@ -140,6 +177,7 @@ static napi_value Init(napi_env env, napi_value exports) {
140
177
DECLARE_NODE_API_PROPERTY("bufferInfo", bufferInfo),
141
178
DECLARE_NODE_API_PROPERTY("staticBuffer", staticBuffer),
142
179
DECLARE_NODE_API_PROPERTY("invalidObjectAsBuffer", invalidObjectAsBuffer),
180
+ DECLARE_NODE_API_PROPERTY("bufferFromArrayBuffer", bufferFromArrayBuffer),
143
181
};
144
182
145
183
NODE_API_CALL(env, napi_define_properties(
0 commit comments