]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-dict: dict-lua - Add transaction:set_non_atomic()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Nov 2023 21:28:59 +0000 (23:28 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 10 Nov 2023 16:48:25 +0000 (16:48 +0000)
src/lib-dict/dict-txn-lua.c

index 8b699d1cef1e344fee0d88d8b8850d8238910832..54bb390b9948f25c99b15ae170b7b8381fc68213 100644 (file)
@@ -25,6 +25,7 @@ static int lua_dict_transaction_commit(lua_State *L);
 static int lua_dict_set(lua_State *L);
 static int lua_dict_unset(lua_State *L);
 static int lua_dict_set_timestamp(lua_State *L);
+static int lua_dict_set_non_atomic(lua_State *L);
 
 static luaL_Reg lua_dict_txn_methods[] = {
        { "rollback", lua_dict_transaction_rollback },
@@ -32,6 +33,7 @@ static luaL_Reg lua_dict_txn_methods[] = {
        { "set", lua_dict_set },
        { "unset", lua_dict_unset },
        { "set_timestamp", lua_dict_set_timestamp },
+       { "set_non_atomic", lua_dict_set_non_atomic },
        { NULL, NULL },
 };
 
@@ -265,3 +267,20 @@ static int lua_dict_set_timestamp(lua_State *L)
        dict_transaction_set_timestamp(txn->txn, &ts);
        return 0;
 }
+
+/*
+ * Set transaction to be non-atomic [-1,+0,e]
+ *
+ * Args:
+ *   1) userdata: struct lua_dict_txn *
+ */
+static int lua_dict_set_non_atomic(lua_State *L)
+{
+       struct lua_dict_txn *txn;
+
+       DLUA_REQUIRE_ARGS(L, 1);
+
+       txn = xlua_dict_txn_getptr(L, 1, NULL);
+       dict_transaction_set_non_atomic(txn->txn);
+       return 0;
+}