diff --git a/code/components/citizen-resources-client/src/KVScriptFunctions.cpp b/code/components/citizen-resources-client/src/KVScriptFunctions.cpp index 709ad8bf9b..25f748e253 100644 --- a/code/components/citizen-resources-client/src/KVScriptFunctions.cpp +++ b/code/components/citizen-resources-client/src/KVScriptFunctions.cpp @@ -100,30 +100,32 @@ static std::string FormatKey(const char* key, const std::string& resource = {}) return "res:" + resName + ":" + key; } +template static void PutResourceKvp(fx::ScriptContext& context, const char* data, size_t size) { auto db = EnsureDatabase(); auto key = FormatKey(context.CheckArgument(0)); leveldb::WriteOptions options; - options.sync = true; + options.sync = sync; db->Put(options, key, leveldb::Slice{ data, size }); } -template +template static void SetResourceKvp(fx::ScriptContext& context) { msgpack::sbuffer buffer; msgpack::packer packer(buffer); packer.pack(std::is_pointer_v ? context.CheckArgument(1) : context.GetArgument(1)); - PutResourceKvp(context, buffer.data(), buffer.size()); + PutResourceKvp(context, buffer.data(), buffer.size()); } +template static void SetResourceKvpRaw(fx::ScriptContext& context) { - PutResourceKvp(context, context.CheckArgument(1), context.GetArgument(2)); + PutResourceKvp(context, context.CheckArgument(1), context.GetArgument(2)); } struct AnyType {}; @@ -319,12 +321,15 @@ static void EndFindKvp(fx::ScriptContext& context) handle->dbIter.reset(); } +template static void DeleteResourceKvp(fx::ScriptContext& context) { auto db = EnsureDatabase(); auto key = FormatKey(context.CheckArgument(0)); + leveldb::WriteOptions options; + options.sync = sync; - db->Delete(leveldb::WriteOptions{}, key); + db->Delete(options, key); } #include @@ -580,10 +585,16 @@ static InitFunction initFunction([]() fx::ScriptEngine::RegisterNativeHandler("GET_EXTERNAL_KVP_STRING", GetExternalKvp); fx::ScriptEngine::RegisterNativeHandler("GET_EXTERNAL_KVP_FLOAT", GetExternalKvp); - fx::ScriptEngine::RegisterNativeHandler("DELETE_RESOURCE_KVP", DeleteResourceKvp); + fx::ScriptEngine::RegisterNativeHandler("DELETE_RESOURCE_KVP", DeleteResourceKvp); fx::ScriptEngine::RegisterNativeHandler("START_FIND_KVP", StartFindKvp); fx::ScriptEngine::RegisterNativeHandler("START_FIND_EXTERNAL_KVP", StartFindExternalKvp); fx::ScriptEngine::RegisterNativeHandler("FIND_KVP", FindKvp); fx::ScriptEngine::RegisterNativeHandler("END_FIND_KVP", EndFindKvp); + + // asynchronous + fx::ScriptEngine::RegisterNativeHandler("SET_RESOURCE_KVP_NO_SYNC", SetResourceKvp); + fx::ScriptEngine::RegisterNativeHandler("SET_RESOURCE_KVP_INT_NO_SYNC", SetResourceKvp); + fx::ScriptEngine::RegisterNativeHandler("SET_RESOURCE_KVP_FLOAT_NO_SYNC", SetResourceKvp); + fx::ScriptEngine::RegisterNativeHandler("DELETE_RESOURCE_KVP_NO_SYNC", DeleteResourceKvp); }); diff --git a/ext/native-decls/kvp/DeleteResourceKvpNoSync.md b/ext/native-decls/kvp/DeleteResourceKvpNoSync.md index a7c04dffa8..590f7efd7a 100644 --- a/ext/native-decls/kvp/DeleteResourceKvpNoSync.md +++ b/ext/native-decls/kvp/DeleteResourceKvpNoSync.md @@ -1,6 +1,6 @@ --- ns: CFX -apiset: server +apiset: shared --- ## DELETE_RESOURCE_KVP_NO_SYNC diff --git a/ext/native-decls/kvp/SetResourceKvpFloatNoSync.md b/ext/native-decls/kvp/SetResourceKvpFloatNoSync.md index db8c76bc0b..da670e3f0d 100644 --- a/ext/native-decls/kvp/SetResourceKvpFloatNoSync.md +++ b/ext/native-decls/kvp/SetResourceKvpFloatNoSync.md @@ -1,6 +1,6 @@ --- ns: CFX -apiset: server +apiset: shared --- ## SET_RESOURCE_KVP_FLOAT_NO_SYNC diff --git a/ext/native-decls/kvp/SetResourceKvpIntNoSync.md b/ext/native-decls/kvp/SetResourceKvpIntNoSync.md index 693a48ee32..029ebae6a8 100644 --- a/ext/native-decls/kvp/SetResourceKvpIntNoSync.md +++ b/ext/native-decls/kvp/SetResourceKvpIntNoSync.md @@ -1,6 +1,6 @@ --- ns: CFX -apiset: server +apiset: shared --- ## SET_RESOURCE_KVP_INT_NO_SYNC diff --git a/ext/native-decls/kvp/SetResourceKvpNoSync.md b/ext/native-decls/kvp/SetResourceKvpNoSync.md index 5b0d050ce0..fd750e33ce 100644 --- a/ext/native-decls/kvp/SetResourceKvpNoSync.md +++ b/ext/native-decls/kvp/SetResourceKvpNoSync.md @@ -1,6 +1,6 @@ --- ns: CFX -apiset: server +apiset: shared --- ## SET_RESOURCE_KVP_NO_SYNC