Lines Matching defs:env

59     WorkData(napi_env env, void *data, void (*handler)(napi_env env, napi_status status, void *data))
60 : env_(env), data_(data), handler_(handler)
66 void (*handler_)(napi_env env, napi_status status, void *data);
69 napi_valuetype GetValueType(napi_env env, napi_value value)
76 NAPI_CALL_BASE(env, napi_typeof(env, value, &valueType), napi_undefined);
80 bool IsInstanceOf(napi_env env, napi_value object, const std::string &name)
82 if (GetValueType(env, object) != napi_object) {
86 auto global = GetGlobal(env);
87 napi_value constructor = GetNamedProperty(env, global, name);
88 if (GetValueType(env, constructor) == napi_undefined) {
93 NAPI_CALL_BASE(env, napi_instanceof(env, object, constructor, &isInstance), false);
98 bool HasNamedProperty(napi_env env, napi_value object, const std::string &propertyName)
100 if (GetValueType(env, object) != napi_object) {
105 NAPI_CALL_BASE(env, napi_has_named_property(env, object, propertyName.c_str(), &hasProperty), false);
109 napi_value GetNamedProperty(napi_env env, napi_value object, const std::string &propertyName)
111 if (GetValueType(env, object) != napi_object) {
112 return GetUndefined(env);
116 NAPI_CALL(env, napi_get_named_property(env, object, propertyName.c_str(), &value));
120 void SetNamedProperty(napi_env env, napi_value object, const std::string &name, napi_value value)
122 if (GetValueType(env, object) != napi_object) {
126 napi_set_named_property(env, object, name.c_str(), value);
129 std::vector<std::string> GetPropertyNames(napi_env env, napi_value object)
131 if (GetValueType(env, object) != napi_object) {
137 NAPI_CALL_BASE(env, napi_get_property_names(env, object, &names), ret);
139 NAPI_CALL_BASE(env, napi_get_array_length(env, names, &length), ret);
142 if (napi_get_element(env, names, index, &name) != napi_ok) {
145 if (GetValueType(env, name) != napi_string) {
148 ret.emplace_back(GetStringFromValueUtf8(env, name));
154 napi_value CreateUint32(napi_env env, uint32_t code)
157 if (napi_create_uint32(env, code, &value) != napi_ok) {
164 napi_value CreateUint64(napi_env env, uint64_t code)
167 if (napi_create_bigint_uint64(env, code, &value) != napi_ok) {
173 int64_t GetInt64FromValue(napi_env env, napi_value value)
175 if (GetValueType(env, value) != napi_number) {
179 NAPI_CALL_BASE(env, napi_get_value_int64(env, value, &ret), 0);
183 int64_t GetInt64Property(napi_env env, napi_value object, const std::string &propertyName)
185 if (!HasNamedProperty(env, object, propertyName)) {
188 napi_value value = GetNamedProperty(env, object, propertyName);
189 return GetInt64FromValue(env, value);
192 uint32_t GetUint32FromValue(napi_env env, napi_value value)
194 if (GetValueType(env, value) != napi_number) {
199 NAPI_CALL_BASE(env, napi_get_value_uint32(env, value, &ret), 0);
203 uint32_t GetUint32Property(napi_env env, napi_value object, const std::string &propertyName)
205 if (!HasNamedProperty(env, object, propertyName)) {
208 napi_value value = GetNamedProperty(env, object, propertyName);
209 return GetUint32FromValue(env, value);
212 void SetUint32Property(napi_env env, napi_value object, const std::string &name, uint32_t value)
214 napi_value jsValue = CreateUint32(env, value);
215 if (GetValueType(env, jsValue) != napi_number) {
219 napi_set_named_property(env, object, name.c_str(), jsValue);
222 void SetUint64Property(napi_env env, napi_value object, const std::string &name, uint64_t value)
224 napi_value jsValue = CreateUint64(env, value);
225 if (GetValueType(env, jsValue) != napi_bigint) {
229 napi_set_named_property(env, object, name.c_str(), jsValue);
233 napi_value CreateInt32(napi_env env, int32_t code)
236 if (napi_create_int32(env, code, &value) != napi_ok) {
242 int32_t GetInt32FromValue(napi_env env, napi_value value)
244 if (GetValueType(env, value) != napi_number) {
249 NAPI_CALL_BASE(env, napi_get_value_int32(env, value, &ret), 0);
253 int32_t GetInt32Property(napi_env env, napi_value object, const std::string &propertyName)
255 if (!HasNamedProperty(env, object, propertyName)) {
258 napi_value value = GetNamedProperty(env, object, propertyName);
259 return GetInt32FromValue(env, value);
262 void SetInt32Property(napi_env env, napi_value object, const std::string &name, int32_t value)
264 napi_value jsValue = CreateInt32(env, value);
265 if (GetValueType(env, jsValue) != napi_number) {
269 napi_set_named_property(env, object, name.c_str(), jsValue);
272 void SetDoubleProperty(napi_env env, napi_value object, const std::string &name, double value)
275 if (napi_create_double(env, value, &jsValue) != napi_ok) {
278 if (GetValueType(env, jsValue) != napi_number) {
281 napi_set_named_property(env, object, name.c_str(), jsValue);
285 napi_value CreateStringUtf8(napi_env env, const std::string &str)
288 if (napi_create_string_utf8(env, str.c_str(), strlen(str.c_str()), &value) != napi_ok) {
294 std::string GetStringFromValueUtf8(napi_env env, napi_value value)
296 if (GetValueType(env, value) != napi_string) {
302 NAPI_CALL_BASE(env, napi_get_value_string_utf8(env, value, nullptr, 0, &stringLength), result);
313 NAPI_CALL_BASE(env, napi_get_value_string_utf8(env, value, str.get(), stringLength + 1, &length), result);
320 std::string GetStringPropertyUtf8(napi_env env, napi_value object, const std::string &propertyName)
322 if (!HasNamedProperty(env, object, propertyName)) {
325 napi_value value = GetNamedProperty(env, object, propertyName);
326 return GetStringFromValueUtf8(env, value);
329 std::string NapiValueToString(napi_env env, napi_value value)
333 status = napi_typeof(env, value, &valueType);
343 status = napi_get_value_bool(env, value, &boolValue);
350 status = napi_get_value_double(env, value, &doubleValue);
359 return GetStringFromValueUtf8(env, value);
366 void SetStringPropertyUtf8(napi_env env, napi_value object, const std::string &name, const std::string &value)
368 napi_value jsValue = CreateStringUtf8(env, value);
369 if (GetValueType(env, jsValue) != napi_string) {
372 napi_set_named_property(env, object, name.c_str(), jsValue);
376 bool ValueIsArrayBuffer(napi_env env, napi_value value)
382 NAPI_CALL_BASE(env, napi_is_arraybuffer(env, value, &isArrayBuffer), false);
386 void *GetInfoFromArrayBufferValue(napi_env env, napi_value value, size_t *length)
393 NAPI_CALL(env, napi_get_arraybuffer_info(env, value, &data, length));
397 napi_value CreateArrayBuffer(napi_env env, size_t length, void **data)
403 NAPI_CALL(env, napi_create_arraybuffer(env, length, data, &result));
408 napi_value CreateObject(napi_env env)
411 NAPI_CALL(env, napi_create_object(env, &object));
416 napi_value GetUndefined(napi_env env)
419 NAPI_CALL(env, napi_get_undefined(env, &undefined));
424 napi_value CallFunction(napi_env env, napi_value recv, napi_value func, size_t argc, const napi_value *argv)
427 NAPI_CALL(env, napi_call_function(env, recv, func, argc, argv, &res));
431 napi_value CreateFunction(napi_env env, const std::string &name, napi_callback func, void *arg)
434 NAPI_CALL(env, napi_create_function(env, name.c_str(), strlen(name.c_str()), func, arg, &res));
439 napi_ref CreateReference(napi_env env, napi_value callback)
442 NAPI_CALL(env, napi_create_reference(env, callback, 1, &callbackRef));
446 napi_value GetReference(napi_env env, napi_ref callbackRef)
449 NAPI_CALL(env, napi_get_reference_value(env, callbackRef, &callback));
453 void DeleteReference(napi_env env, napi_ref callbackRef)
455 (void)napi_delete_reference(env, callbackRef);
459 bool GetBooleanProperty(napi_env env, napi_value object, const std::string &propertyName)
461 if (!HasNamedProperty(env, object, propertyName)) {
464 napi_value value = GetNamedProperty(env, object, propertyName);
466 NAPI_CALL_BASE(env, napi_get_value_bool(env, value, &ret), false);
470 void SetBooleanProperty(napi_env env, napi_value object, const std::string &name, bool value)
473 NAPI_CALL_RETURN_VOID(env, napi_get_boolean(env, value, &jsValue));
474 if (GetValueType(env, jsValue) != napi_boolean) {
478 napi_set_named_property(env, object, name.c_str(), jsValue);
481 napi_value GetBoolean(napi_env env, bool value)
484 NAPI_CALL(env, napi_get_boolean(env, value, &jsValue));
488 bool GetBooleanFromValue(napi_env env, napi_value value)
490 if (GetValueType(env, value) != napi_boolean) {
491 return GetUndefined(env);
495 NAPI_CALL_BASE(env, napi_get_value_bool(env, value, &ret), false);
500 void DefineProperties(napi_env env, napi_value object,
506 (void)napi_define_properties(env, object, properties.size(), descriptors);
510 napi_value CreateArray(napi_env env, size_t length)
514 NAPI_CALL(env, napi_create_array(env, &res));
518 NAPI_CALL(env, napi_create_array_with_length(env, length, &res));
522 void SetArrayElement(napi_env env, napi_value array, uint32_t index, napi_value value)
524 (void)napi_set_element(env, array, index, value);
527 bool IsArray(napi_env env, napi_value value)
530 NAPI_CALL_BASE(env, napi_is_array(env, value, &result), false);
534 void SetArrayProperty(napi_env env, napi_value object, const std::string &name, napi_value value)
536 if (!IsArray(env, value)) {
539 napi_set_named_property(env, object, name.c_str(), value);
542 uint32_t GetArrayLength(napi_env env, napi_value arr)
545 NAPI_CALL_BASE(env, napi_get_array_length(env, arr, &arrayLength), 0);
549 napi_value GetArrayElement(napi_env env, napi_value arr, uint32_t index)
552 NAPI_CALL(env, napi_get_element(env, arr, index, &elementValue));
557 napi_value JsonStringify(napi_env env, napi_value object)
559 napi_value undefined = GetUndefined(env);
561 if (GetValueType(env, object) != napi_object) {
566 NAPI_CALL_BASE(env, napi_get_global(env, &global), undefined);
568 NAPI_CALL_BASE(env, napi_get_named_property(env, global, GLOBAL_JSON, &json), undefined);
570 NAPI_CALL_BASE(env, napi_get_named_property(env, json, GLOBAL_JSON_STRINGIFY, &stringify), undefined);
571 if (GetValueType(env, stringify) != napi_function) {
577 NAPI_CALL_BASE(env, napi_call_function(env, json, stringify, 1, argv, &res), undefined);
581 napi_value JsonParse(napi_env env, const std::string &inStr)
583 napi_value undefined = GetUndefined(env);
591 auto str = NapiUtils::CreateStringUtf8(env, inStr);
592 if (GetValueType(env, str) != napi_string) {
597 NAPI_CALL_BASE(env, napi_get_global(env, &global), undefined);
599 NAPI_CALL_BASE(env, napi_get_named_property(env, global, GLOBAL_JSON, &json), undefined);
601 NAPI_CALL_BASE(env, napi_get_named_property(env, json, GLOBAL_JSON_PARSE, &parse), undefined);
602 if (GetValueType(env, parse) != napi_function) {
608 NAPI_CALL_BASE(env, napi_call_function(env, json, parse, 1, argv, &res), undefined);
613 void CreateUvQueueWork(napi_env env, void *data, void(handler)(uv_work_t *, int status))
616 if (!IsEnvValid(env)) {
617 NETSTACK_LOGE("the env is invalid");
620 NAPI_CALL_RETURN_VOID(env, napi_get_uv_event_loop(env, &loop));
635 napi_handle_scope OpenScope(napi_env env)
638 NAPI_CALL(env, napi_open_handle_scope(env, &scope));
642 void CloseScope(napi_env env, napi_handle_scope scope)
644 (void)napi_close_handle_scope(env, scope);
661 napi_env env = workData->env_;
662 auto closeScope = [env](napi_handle_scope scope) { NapiUtils::CloseScope(env, scope); };
663 std::unique_ptr<napi_handle_scope__, decltype(closeScope)> scope(NapiUtils::OpenScope(env), closeScope);
671 void CreateUvQueueWorkEnhanced(napi_env env, void *data, void (*handler)(napi_env env, napi_status status, void *data))
674 if (!IsEnvValid(env)) {
675 NETSTACK_LOGE("the env is invalid");
678 NAPI_CALL_RETURN_VOID(env, napi_get_uv_event_loop(env, &loop));
684 auto workData = new WorkData(env, data, handler);
702 napi_value CreateErrorMessage(napi_env env, int32_t errorCode, const std::string &errorMessage)
705 result = CreateObject(env);
706 SetNamedProperty(env, result, CODE, CreateInt32(env, errorCode));
707 SetNamedProperty(env, result, MSG, CreateStringUtf8(env, errorMessage));
711 napi_value GetGlobal(napi_env env)
713 napi_value undefined = GetUndefined(env);
715 NAPI_CALL_BASE(env, napi_get_global(env, &global), undefined);
719 uint64_t CreateUvHandlerQueue(napi_env env)
725 auto global = GetGlobal(env);
726 auto queueWrapper = CreateObject(env);
727 SetNamedProperty(env, global, HTTP_UV_SYNC_QUEUE_NAME, queueWrapper);
733 env, queueWrapper, reinterpret_cast<void *>(newId),
734 [](napi_env env, void *data, void *) {
743 napi_value GetValueFromGlobal(napi_env env, const std::string &className)
745 auto global = NapiUtils::GetGlobal(env);
746 if (NapiUtils::GetValueType(env, global) == napi_undefined) {
747 return GetUndefined(env);
749 return NapiUtils::GetNamedProperty(env, global, className);
763 auto env = reinterpret_cast<napi_env>(work->data);
764 if (!env) {
768 auto closeScope = [env](napi_handle_scope scope) { NapiUtils::CloseScope(env, scope); };
769 std::unique_ptr<napi_handle_scope__, decltype(closeScope)> scope(NapiUtils::OpenScope(env), closeScope);
770 auto queueWrapper = NapiUtils::GetValueFromGlobal(env, HTTP_UV_SYNC_QUEUE_NAME);
775 napi_unwrap(env, queueWrapper, &theId);
794 void CreateUvQueueWorkByModuleId(napi_env env, const UvHandler &handler, uint64_t id)
797 if (!IsEnvValid(env)) {
798 NETSTACK_LOGE("the env is invalid");
801 napi_get_uv_event_loop(env, &loop);
816 work->data = env;
850 auto env = static_cast<napi_env>(data);
851 auto pos = unorderedSetEnv.find(env);
853 NETSTACK_LOGE("The env is not in the unordered set");
856 NETSTACK_LOGD("env clean up, erase from the unordered set");
860 void SetEnvValid(napi_env env)
863 unorderedSetEnv.emplace(env);
866 bool IsEnvValid(napi_env env)
869 auto pos = unorderedSetEnv.find(env);