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

Function ExWriteDataDBFunc

src/vm/luavm/lmylib.cpp:1341–1374  ·  view source on GitHub ↗

*bool WriteDataDB(const void* const key,const uint8_t keylen,const void * const value,const uint16_t valuelen,const uint32_t time) * 这个函数式从中间层传了三个个参数过来: * 1.第一个是 key值 * 2.第二个是value值 */

Source from the content-addressed store, hash-verified

1339 * 2.第二个是value值
1340 */
1341int32_t ExWriteDataDBFunc(lua_State *L) {
1342 vector<std::shared_ptr < vector<uint8_t> > > retdata;
1343 if (!GetDataTableWriteDataDB(L, retdata) || retdata.size() != 2) {
1344 return RetFalse("ExWriteDataDBFunc key err1");
1345 }
1346
1347 string key((*retdata.at(0)).begin(), (*retdata.at(0)).end());
1348 string value((*retdata.at(1)).begin(), (*retdata.at(1)).end());
1349
1350 CLuaVMRunEnv* pVmRunEnv = GetVmRunEnv(L);
1351 if (nullptr == pVmRunEnv) {
1352
1353 return RetFalse("pVmRunEnv is nullptr");
1354 }
1355
1356 const CRegID contractRegId = pVmRunEnv->GetContractRegID();
1357 bool flag = true;
1358 CContractDBCache* scriptDB = pVmRunEnv->GetScriptDB();
1359 string oldValue;
1360 // TODO: get old data when set data ??
1361 scriptDB->GetContractData(contractRegId, key, oldValue);
1362 if (!scriptDB->SetContractData(contractRegId, key, value)) {
1363 LogPrint(BCLog::LUAVM, "ExWriteDataDBFunc SetContractData failed, key:%s!\n",HexStr(key));
1364 lua_BurnStoreUnchanged(L, key.size(), value.size(), BURN_VER_R2);
1365 flag = false;
1366 } else {
1367 lua_BurnStoreSet(L, key.size(), oldValue.size(), value.size(), BURN_VER_R2);
1368 }
1369 #ifdef TRACE_LUAVM_CONTRACT_DATA
1370 LogPrint(BCLog::LUAVM, "WriteData(), contract_regid=%s, key=%s, key_hex=%s, new_value=%s, new_value_hex=%s\n",
1371 contractRegId.ToString(), key, HexStr(key), value, HexStr(value));
1372 #endif//TRACE_LUAVM_CONTRACT_DATA
1373 return RetRstBooleanToLua(L,flag);
1374}
1375
1376/**
1377 *bool DeleteDataDB(const void* const key,const uint8_t keylen)

Callers

nothing calls this directly

Calls 15

GetDataTableWriteDataDBFunction · 0.85
RetFalseFunction · 0.85
GetVmRunEnvFunction · 0.85
HexStrFunction · 0.85
lua_BurnStoreUnchangedFunction · 0.85
lua_BurnStoreSetFunction · 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