未验证 提交 e0afab19 编写于 作者: K Kevin Heifner 提交者: GitHub

Merge pull request #5066 from EOSIO/gh#4968-inline-actions

Gh#4968 inline actions
......@@ -55,6 +55,11 @@ namespace eosio { namespace chain {
set_abi(abi, max_serialization_time);
}
void abi_serializer::add_specialized_unpack_pack( const string& name,
std::pair<abi_serializer::unpack_function, abi_serializer::pack_function> unpack_pack ) {
built_in_types[name] = std::move( unpack_pack );
}
void abi_serializer::configure_built_in_types() {
built_in_types.emplace("bool", pack_unpack<uint8_t>());
......
......@@ -86,11 +86,13 @@ struct abi_serializer {
return false;
}
static const size_t max_recursion_depth = 32; // arbitrary depth to prevent infinite recursion
typedef std::function<fc::variant(fc::datastream<const char*>&, bool, bool)> unpack_function;
typedef std::function<void(const fc::variant&, fc::datastream<char*>&, bool, bool)> pack_function;
void add_specialized_unpack_pack( const string& name, std::pair<abi_serializer::unpack_function, abi_serializer::pack_function> unpack_pack );
static const size_t max_recursion_depth = 32; // arbitrary depth to prevent infinite recursion
private:
map<type_name, type_name> typedefs;
......@@ -134,6 +136,7 @@ namespace impl {
std::is_same<T, packed_transaction>::value ||
std::is_same<T, transaction_trace>::value ||
std::is_same<T, transaction_receipt>::value ||
std::is_same<T, base_action_trace>::value ||
std::is_same<T, action_trace>::value ||
std::is_same<T, signed_transaction>::value ||
std::is_same<T, signed_block>::value ||
......
......@@ -334,8 +334,8 @@ class Node(object):
key="[trx][trx][ref_block_num]"
refBlockNum=trans["trx"]["trx"]["ref_block_num"]
else:
key="[transaction_header][ref_block_num]"
refBlockNum=trans["transaction_header"]["ref_block_num"]
key="[ref_block_num]"
refBlockNum=trans["ref_block_num"]
refBlockNum=int(refBlockNum)+1
except (TypeError, ValueError, KeyError) as _:
Utils.Print("transaction%s not found. Transaction: %s" % (key, trans))
......@@ -366,10 +366,10 @@ class Node(object):
refBlockNum=None
try:
refBlockNum=trans["transaction_header"]["ref_block_num"]
refBlockNum=trans["ref_block_num"]
refBlockNum=int(refBlockNum)+1
except (TypeError, ValueError, KeyError) as _:
Utils.Print("transaction[transaction_header][ref_block_num] not found. Transaction: %s" % (trans))
Utils.Print("transaction[ref_block_num] not found. Transaction: %s" % (trans))
return None
headBlockNum=self.getHeadBlockNum()
......@@ -688,7 +688,7 @@ class Node(object):
assert(isinstance(offset, int))
cmd="%s %s" % (Utils.MongoPath, self.mongoEndpointArgs)
subcommand='db.actions.find({$or: [{"data.from":"%s"},{"data.to":"%s"}]}).sort({"_id":%d}).limit(%d)' % (account.name, account.name, pos, abs(offset))
subcommand='db.action_traces.find({$or: [{"act.data.from":"%s"},{"act.data.to":"%s"}]}).sort({"_id":%d}).limit(%d)' % (account.name, account.name, pos, abs(offset))
if Utils.Debug: Utils.Print("cmd: echo '%s' | %s" % (subcommand, cmd))
try:
actions=Node.runMongoCmdReturnJson(cmd.split(), subcommand, exitOnError=exitOnError)
......
......@@ -275,7 +275,7 @@ try:
if not enableMongo:
assert(actions["actions"][0]["action_trace"]["act"]["name"] == "transfer")
else:
assert(actions["name"] == "transfer")
assert(actions["act"]["name"] == "transfer")
except (AssertionError, TypeError, KeyError) as _:
Print("Action validation failed. Actions: %s" % (actions))
raise
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册