MCPcopy Create free account
hub / github.com/WaykiChain/WaykiChain / ExModifyDataDBFunc

Function ExModifyDataDBFunc

src/vm/luavm/lmylib.cpp:1476–1510  ·  view source on GitHub ↗

*bool ExModifyDataDBFunc(const void* const key,const uint8_t keylen, const void* const pvalue,const uint16_t valuelen) * 中间层传了两个参数 * 1.第一个是 key * 2.第二个是 value */

Source from the content-addressed store, hash-verified

1474 * 2.第二个是 value
1475 */
1476int32_t ExModifyDataDBFunc(lua_State *L) {
1477 vector<std::shared_ptr < vector<uint8_t> > > retdata;
1478 if (!GetDataTableWriteDataDB(L,retdata) ||retdata.size() != 2) {
1479 return RetFalse("ExModifyDataDBFunc key err");
1480 }
1481
1482 string key((*retdata.at(0)).begin(), (*retdata.at(0)).end());
1483 string newValue((*retdata.at(1)).begin(), (*retdata.at(1)).end());
1484
1485 CLuaVMRunEnv* pVmRunEnv = GetVmRunEnv(L);
1486 if (nullptr == pVmRunEnv) {
1487 return RetFalse("pVmRunEnv is nullptr");
1488 }
1489
1490 CRegID contractRegId = pVmRunEnv->GetContractRegID();
1491 CContractDBCache* scriptDB = pVmRunEnv->GetScriptDB();
1492 string oldValue;
1493 bool flag = false;
1494 if (scriptDB->GetContractData(contractRegId, key, oldValue)) {
1495 if (scriptDB->SetContractData(contractRegId, key, newValue)) {
1496 lua_BurnStoreSet(L, key.size(), oldValue.size(), newValue.size(), BURN_VER_R2);
1497 flag = true;
1498 } else {
1499 lua_BurnStoreUnchanged(L, key.size(), newValue.size(), BURN_VER_R2);
1500 }
1501 } else {
1502 lua_BurnStoreUnchanged(L, key.size(), newValue.size(), BURN_VER_R2);
1503 }
1504 #ifdef TRACE_LUAVM_CONTRACT_DATA
1505 LogPrint(BCLog::LUAVM, "ModifyData(), contract_regid=%s, key=%s, key_hex=%s, new_value=%s, new_value_hex=%s\n",
1506 contractRegId.ToString(), key, HexStr(key), newValue, HexStr(newValue));
1507 #endif//TRACE_LUAVM_CONTRACT_DATA
1508
1509 return RetRstBooleanToLua(L,flag);
1510}
1511
1512
1513static bool GetDataTableWriteOutput(lua_State *L, CVmOperate &operate) {

Callers

nothing calls this directly

Calls 15

GetDataTableWriteDataDBFunction · 0.85
RetFalseFunction · 0.85
GetVmRunEnvFunction · 0.85
lua_BurnStoreSetFunction · 0.85
lua_BurnStoreUnchangedFunction · 0.85
HexStrFunction · 0.85
RetRstBooleanToLuaFunction · 0.85
atMethod · 0.80
GetScriptDBMethod · 0.80
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected