EOS行为核心:解析插件chain_plugin (7)

继续回到get_table_rows接口函数体,如果不是主键,则需要按照键类型来区分处理,键类型包括i64, i128, i256, float64, float128, ripemd160, sha256。这里与主键不同的是,检索table的核心函数改为get_table_rows_by_seckey,该函数与主键处理函数大部分逻辑是一致的,只是特殊在键的处理上,由于该函数是处理二级索引的,因此要先通过代码const auto& secidx = d.get_index<IndexType, chain::by_secondary>();获得二级索引。然后对迭代器数据集进行处理,获得结果集的循环起止位,最后循环导出结果集即可。

11. 指定范围获取table数据 get_table_by_scope

此处的scope并不是前面理解的查询条件,而是字面意思,表示一个范围,上面提到了,在表数据中,范围就是上限和下限以及条目限制。因此不难猜出get_table_by_scope接口的入参对象结构:

struct get_table_by_scope_params { name code; // 必须字段,传入账户名 name table = 0; // 可选,作为过滤器 string lower_bound; // 范围下限,可选 string upper_bound; // 范围上限,可选 uint32_t limit = 10; // 范围数量,限制条目 };

那么处理结果集就简单了,实际上就是上面函数get_table_rows_ex的一部分,取出相关结果集返回即可。

12. 获取货币余额 get_currency_balance

接口入参结构:

struct get_currency_balance_params { name code; // 账户名,token合约的owner,一般是eosio.token账户 name account; // 账户名,检索条件,查询该账户的余额 optional<string> symbol; // 检索条件,需要的token符号,例如SYS(主币),EOS等。 };

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfzz.html