Skip to content

Commit

Permalink
GH-677 Minor cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
heifner committed Feb 7, 2023
1 parent 62903c0 commit eb0d3dc
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 47 deletions.
26 changes: 13 additions & 13 deletions libraries/chain/abi_serializer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,29 +149,29 @@ namespace eosio { namespace chain {
variants.clear();
action_results.clear();

for( auto&& st : abi.structs )
for( auto& st : abi.structs )
structs[st.name] = std::move(st);

for( auto&& td : abi.types ) {
for( auto& td : abi.types ) {
EOS_ASSERT(!_is_type(td.new_type_name, ctx), duplicate_abi_type_def_exception,
"type already exists", ("new_type_name",impl::limit_size(td.new_type_name)));
typedefs[td.new_type_name] = std::move(td.type);
typedefs[std::move(td.new_type_name)] = std::move(td.type);
}

for( auto&& a : abi.actions )
actions[a.name] = std::move(a.type);
for( auto& a : abi.actions )
actions[std::move(a.name)] = std::move(a.type);

for( auto&& t : abi.tables )
tables[t.name] = std::move(t.type);
for( auto& t : abi.tables )
tables[std::move(t.name)] = std::move(t.type);

for( auto&& e : abi.error_messages )
error_messages[e.error_code] = std::move(e.error_msg);
for( auto& e : abi.error_messages )
error_messages[std::move(e.error_code)] = std::move(e.error_msg);

for( auto&& v : abi.variants.value )
variants[v.name] = std::move(v);
for( auto& v : abi.variants.value )
variants[std::move(v.name)] = std::move(v);

for( auto&& r : abi.action_results.value )
action_results[r.name] = std::move(r.result_type);
for( auto& r : abi.action_results.value )
action_results[std::move(r.name)] = std::move(r.result_type);

/**
* The ABI vector may contain duplicates which would make it
Expand Down
3 changes: 1 addition & 2 deletions libraries/chain/include/eosio/chain/controller.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,8 +348,7 @@ namespace eosio { namespace chain {
if( n.good() ) {
try {
const auto& a = get_account( n );
abi_def abi;
if( abi_serializer::to_abi( a.abi, abi ))
if( abi_def abi; abi_serializer::to_abi( a.abi, abi ))
return abi_serializer( std::move(abi), yield );
} FC_CAPTURE_AND_LOG((n))
}
Expand Down
3 changes: 1 addition & 2 deletions libraries/testing/include/eosio/testing/tester.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -341,8 +341,7 @@ namespace eosio { namespace testing {
return [this]( const account_name& name ) -> std::optional<abi_serializer> {
try {
const auto& accnt = control->db().get<account_object, by_name>( name );
abi_def abi;
if( abi_serializer::to_abi( accnt.abi, abi )) {
if( abi_def abi; abi_serializer::to_abi( accnt.abi, abi )) {
return abi_serializer( std::move(abi), abi_serializer::create_yield_function( abi_serializer_max_time ) );
}
return std::optional<abi_serializer>();
Expand Down
40 changes: 14 additions & 26 deletions plugins/chain_plugin/chain_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1783,23 +1783,16 @@ read_only::get_producer_schedule_result read_only::get_producer_schedule( const
}


struct resolver_factory {
static auto make(const controller& control, abi_serializer::yield_function_t yield) {
return [&control, yield{std::move(yield)}](const account_name &name) -> std::optional<abi_serializer> {
const auto* accnt = control.db().template find<account_object, by_name>(name);
if (accnt != nullptr) {
abi_def abi;
if (abi_serializer::to_abi(accnt->abi, abi)) {
return abi_serializer(std::move(abi), yield);
}
}
return std::optional<abi_serializer>();
};
}
};

auto make_resolver(const controller& control, abi_serializer::yield_function_t yield) {
return resolver_factory::make(control, std::move( yield ));
return [&control, yield{std::move(yield)}](const account_name &name) -> std::optional<abi_serializer> {
const auto* accnt = control.db().template find<account_object, by_name>(name);
if (accnt != nullptr) {
if (abi_def abi; abi_serializer::to_abi(accnt->abi, abi)) {
return abi_serializer(std::move(abi), yield);
}
}
return {};
};
}

read_only::get_scheduled_transactions_result
Expand Down Expand Up @@ -2235,8 +2228,7 @@ read_only::get_abi_results read_only::get_abi( const get_abi_params& params, con
const auto& d = db.db();
const auto& accnt = d.get<account_object,by_name>( params.account_name );

abi_def abi;
if( abi_serializer::to_abi(accnt.abi, abi) ) {
if( abi_def abi; abi_serializer::to_abi(accnt.abi, abi) ) {
result.abi = std::move(abi);
}

Expand All @@ -2258,8 +2250,7 @@ read_only::get_code_results read_only::get_code( const get_code_params& params,
result.code_hash = code_obj.code_hash;
}

abi_def abi;
if( abi_serializer::to_abi(accnt_obj.abi, abi) ) {
if( abi_def abi; abi_serializer::to_abi(accnt_obj.abi, abi) ) {
result.abi = std::move(abi);
}

Expand Down Expand Up @@ -2397,8 +2388,7 @@ read_only::get_account_results read_only::get_account( const get_account_params&

const auto& code_account = db.db().get<account_object,by_name>( config::system_account_name );

abi_def abi;
if( abi_serializer::to_abi(code_account.abi, abi) ) {
if( abi_def abi; abi_serializer::to_abi(code_account.abi, abi) ) {
abi_serializer abis( std::move(abi), abi_serializer::create_yield_function( abi_serializer_max_time ) );

const auto token_code = "eosio.token"_n;
Expand Down Expand Up @@ -2497,8 +2487,7 @@ read_only::abi_json_to_bin_result read_only::abi_json_to_bin( const read_only::a
const auto code_account = db.db().find<account_object,by_name>( params.code );
EOS_ASSERT(code_account != nullptr, contract_query_exception, "Contract can't be found ${contract}", ("contract", params.code));

abi_def abi;
if( abi_serializer::to_abi(code_account->abi, abi) ) {
if( abi_def abi; abi_serializer::to_abi(code_account->abi, abi) ) {
abi_serializer abis( std::move(abi), abi_serializer::create_yield_function( abi_serializer_max_time ) );
auto action_type = abis.get_action_type(params.action);
EOS_ASSERT(!action_type.empty(), action_validate_exception, "Unknown action ${action} in contract ${contract}", ("action", params.action)("contract", params.code));
Expand All @@ -2517,8 +2506,7 @@ read_only::abi_json_to_bin_result read_only::abi_json_to_bin( const read_only::a
read_only::abi_bin_to_json_result read_only::abi_bin_to_json( const read_only::abi_bin_to_json_params& params, const fc::time_point& deadline )const {
abi_bin_to_json_result result;
const auto& code_account = db.db().get<account_object,by_name>( params.code );
abi_def abi;
if( abi_serializer::to_abi(code_account.abi, abi) ) {
if( abi_def abi; abi_serializer::to_abi(code_account.abi, abi) ) {
abi_serializer abis( std::move(abi), abi_serializer::create_yield_function( abi_serializer_max_time ) );
result.args = abis.binary_to_variant( abis.get_action_type( params.action ), params.binargs, abi_serializer::create_yield_function( abi_serializer_max_time ), shorten_abi_errors );
} else {
Expand Down
3 changes: 1 addition & 2 deletions tests/chain_plugin_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@ BOOST_FIXTURE_TEST_CASE( get_block_with_invalid_abi, TESTER ) try {
auto resolver = [&,this]( const account_name& name ) -> std::optional<abi_serializer> {
try {
const auto& accnt = this->control->db().get<account_object,by_name>( name );
abi_def abi;
if (abi_serializer::to_abi(accnt.abi, abi)) {
if (abi_def abi; abi_serializer::to_abi(accnt.abi, abi)) {
return abi_serializer(std::move(abi), abi_serializer::create_yield_function( abi_serializer_max_time ));
}
return std::optional<abi_serializer>();
Expand Down
3 changes: 1 addition & 2 deletions unittests/wasm_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,7 @@ BOOST_FIXTURE_TEST_CASE( abi_from_variant, TESTER ) try {
auto resolver = [&,this]( const account_name& name ) -> std::optional<abi_serializer> {
try {
const auto& accnt = this->control->db().get<account_object,by_name>( name );
abi_def abi;
if (abi_serializer::to_abi(accnt.abi, abi)) {
if (abi_def abi; abi_serializer::to_abi(accnt.abi, abi)) {
return abi_serializer(std::move(abi), abi_serializer::create_yield_function( abi_serializer_max_time ));
}
return std::optional<abi_serializer>();
Expand Down

0 comments on commit eb0d3dc

Please sign in to comment.