mirror of
https://github.com/openharmony/distributeddatamgr_objectstore.git
synced 2026-07-01 22:34:02 -04:00
@@ -33,6 +33,7 @@ public:
|
||||
bool isUndefined(char *value);
|
||||
void AddUndefined(char *value);
|
||||
void DeleteUndefined(char *value);
|
||||
void DestroyObject();
|
||||
|
||||
private:
|
||||
DistributedObjectStore *objectStore_;
|
||||
|
||||
@@ -55,6 +55,7 @@ napi_value JSDistributedObject::JSGet(napi_env env, napi_callback_info info)
|
||||
status = napi_unwrap(env, thisVar, (void **)&wrapper);
|
||||
CHECK_EQUAL_WITH_RETURN_NULL(status, napi_ok);
|
||||
ASSERT_MATCH_ELSE_RETURN_NULL(wrapper != nullptr);
|
||||
ASSERT_MATCH_ELSE_RETURN_NULL(wrapper->GetObject() != nullptr);
|
||||
napi_value result = nullptr;
|
||||
if (wrapper->isUndefined(key)) {
|
||||
napi_get_undefined(env, &result);
|
||||
@@ -88,6 +89,7 @@ napi_value JSDistributedObject::JSPut(napi_env env, napi_callback_info info)
|
||||
status = napi_unwrap(env, thisVar, (void **)&wrapper);
|
||||
CHECK_EQUAL_WITH_RETURN_NULL(status, napi_ok);
|
||||
ASSERT_MATCH_ELSE_RETURN_NULL(wrapper != nullptr);
|
||||
ASSERT_MATCH_ELSE_RETURN_NULL(wrapper->GetObject() != nullptr);
|
||||
if (valueType == napi_undefined) {
|
||||
wrapper->AddUndefined(key);
|
||||
return nullptr;
|
||||
@@ -236,6 +238,7 @@ napi_value JSDistributedObject::JSSave(napi_env env, napi_callback_info info)
|
||||
napi_status status = napi_unwrap(env, ctxt->self, (void **)&wrapper);
|
||||
CHECK_EQUAL_WITH_RETURN_VOID(status, napi_ok);
|
||||
ASSERT_MATCH_ELSE_RETURN_VOID(wrapper != nullptr);
|
||||
ASSERT_MATCH_ELSE_RETURN_VOID(wrapper->GetObject() != nullptr);
|
||||
ctxt->object = wrapper->GetObject();
|
||||
};
|
||||
ctxt->GetCbInfo(env, info, getCbOpe);
|
||||
@@ -243,8 +246,7 @@ napi_value JSDistributedObject::JSSave(napi_env env, napi_callback_info info)
|
||||
if (ctxt->status == napi_ok) {
|
||||
ctxt->status = napi_new_instance(env,
|
||||
JSDistributedObject::GetSaveResultCons(env, ctxt->object->GetSessionId(),
|
||||
ctxt->version, ctxt->deviceId),
|
||||
0, nullptr, &result);
|
||||
ctxt->version, ctxt->deviceId), 0, nullptr, &result);
|
||||
CHECK_STATUS_RETURN_VOID(ctxt, "output failed!");
|
||||
}
|
||||
};
|
||||
@@ -285,6 +287,7 @@ napi_value JSDistributedObject::JSRevokeSave(napi_env env, napi_callback_info in
|
||||
napi_status status = napi_unwrap(env, ctxt->self, (void **)&wrapper);
|
||||
CHECK_EQUAL_WITH_RETURN_VOID(status, napi_ok);
|
||||
ASSERT_MATCH_ELSE_RETURN_VOID(wrapper != nullptr);
|
||||
ASSERT_MATCH_ELSE_RETURN_VOID(wrapper->GetObject() != nullptr);
|
||||
ctxt->object = wrapper->GetObject();
|
||||
};
|
||||
ctxt->GetCbInfo(env, info, getCbOpe);
|
||||
|
||||
@@ -97,13 +97,19 @@ napi_value JSDistributedObjectStore::NewDistributedObject(
|
||||
status = napi_wrap(
|
||||
env, result, objectWrapper,
|
||||
[](napi_env env, void *data, void *hint) {
|
||||
LOG_INFO("start delete object");
|
||||
if (data == nullptr) {
|
||||
LOG_WARN("objectWrapper is nullptr.");
|
||||
return;
|
||||
}
|
||||
auto objectWrapper = (JSObjectWrapper *)data;
|
||||
if (objectWrapper->GetObject() == nullptr) {
|
||||
delete objectWrapper;
|
||||
return;
|
||||
}
|
||||
LOG_INFO("start delete object");
|
||||
DistributedObjectStore::GetInstance(JSDistributedObjectStore::GetBundleName(env))
|
||||
->DeleteObject(objectWrapper->GetObject()->GetSessionId());
|
||||
if (objectWrapper != nullptr) {
|
||||
delete objectWrapper;
|
||||
}
|
||||
delete objectWrapper;
|
||||
},
|
||||
nullptr, nullptr);
|
||||
RestoreWatchers(env, objectWrapper, objectId);
|
||||
@@ -172,10 +178,9 @@ napi_value JSDistributedObjectStore::JSDestroyObjectSync(napi_env env, napi_call
|
||||
ASSERT_MATCH_ELSE_RETURN_NULL(objectInfo != nullptr && objectWrapper->GetObject() != nullptr);
|
||||
objectWrapper->DeleteWatch(env, CHANGE);
|
||||
objectWrapper->DeleteWatch(env, STATUS);
|
||||
uint32_t ret = objectInfo->DeleteObject(objectWrapper->GetObject()->GetSessionId());
|
||||
napi_value result = nullptr;
|
||||
napi_create_int32(env, ret, &result);
|
||||
return result;
|
||||
objectInfo->DeleteObject(objectWrapper->GetObject()->GetSessionId());
|
||||
objectWrapper->DestroyObject();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// function on(type: 'change', object: DistributedObject, callback: Callback<ChangedDataObserver>): void;
|
||||
|
||||
@@ -87,4 +87,9 @@ void JSObjectWrapper::DeleteUndefined(char *value)
|
||||
undefinedProperties.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
void JSObjectWrapper::DestroyObject()
|
||||
{
|
||||
object_ = nullptr;
|
||||
}
|
||||
} // namespace OHOS::ObjectStore
|
||||
Reference in New Issue
Block a user