From 80efb85d72307c89a1d8f0f9bd1b205ad5b0b3da Mon Sep 17 00:00:00 2001 From: Apr Team Date: Sat, 12 May 2018 13:31:19 +0300 Subject: [PATCH] Added event_group delete operation and evaluator. Fixed compilation issues. --- libraries/app/impacted.cpp | 1 + libraries/chain/db_init.cpp | 1 + libraries/chain/db_notify.cpp | 1 + libraries/chain/event_group_evaluator.cpp | 11 ++++++++ .../graphene/chain/event_group_evaluator.hpp | 9 +++++++ .../graphene/chain/protocol/event_group.hpp | 17 ++++++++++++ .../graphene/chain/protocol/operations.hpp | 1 + libraries/chain/protocol/event_group.cpp | 5 ++++ .../wallet/include/graphene/wallet/wallet.hpp | 6 +++++ libraries/wallet/wallet.cpp | 27 +++++++++++++++++++ 10 files changed, 79 insertions(+) diff --git a/libraries/app/impacted.cpp b/libraries/app/impacted.cpp index 6da8a7c7..f58c8e37 100644 --- a/libraries/app/impacted.cpp +++ b/libraries/app/impacted.cpp @@ -214,6 +214,7 @@ struct get_impacted_account_visitor void operator()( const sport_delete_operation& op ) {} void operator()( const event_group_create_operation& op ) {} void operator()( const event_group_update_operation& op ) {} + void operator()( const event_group_delete_operation& op ) {} void operator()( const event_create_operation& op ) {} void operator()( const event_update_operation& op ) {} void operator()( const event_update_status_operation& op ) {} diff --git a/libraries/chain/db_init.cpp b/libraries/chain/db_init.cpp index 613ee720..3e239eca 100644 --- a/libraries/chain/db_init.cpp +++ b/libraries/chain/db_init.cpp @@ -219,6 +219,7 @@ void database::initialize_evaluators() register_evaluator(); register_evaluator(); register_evaluator(); + register_evaluator(); register_evaluator(); register_evaluator(); register_evaluator(); diff --git a/libraries/chain/db_notify.cpp b/libraries/chain/db_notify.cpp index 93338089..0b34a586 100644 --- a/libraries/chain/db_notify.cpp +++ b/libraries/chain/db_notify.cpp @@ -196,6 +196,7 @@ struct get_impacted_account_visitor void operator()(const sport_delete_operation&){} void operator()(const event_group_create_operation&){} void operator()(const event_group_update_operation& op ) {} + void operator()(const event_group_delete_operation& op ) {} void operator()(const event_create_operation&){} void operator()(const event_update_operation& op ) {} void operator()(const event_update_status_operation& op ) {} diff --git a/libraries/chain/event_group_evaluator.cpp b/libraries/chain/event_group_evaluator.cpp index 1b0d8195..4b13dd16 100644 --- a/libraries/chain/event_group_evaluator.cpp +++ b/libraries/chain/event_group_evaluator.cpp @@ -96,5 +96,16 @@ void_result event_group_update_evaluator::do_apply(const event_group_update_oper return void_result(); } FC_CAPTURE_AND_RETHROW( (op) ) } + +void_result event_group_delete_evaluator::do_evaluate(const event_group_delete_operation& op) +{ try { + FC_ASSERT(trx_state->_is_proposed_trx); + return void_result(); +} FC_CAPTURE_AND_RETHROW( (op) ) } +void_result event_group_delete_evaluator::do_apply(const event_group_delete_operation& op) +{ try { + return void_result(); +} FC_CAPTURE_AND_RETHROW( (op) ) } + } } // graphene::chain diff --git a/libraries/chain/include/graphene/chain/event_group_evaluator.hpp b/libraries/chain/include/graphene/chain/event_group_evaluator.hpp index 1feda1c0..52eecbec 100644 --- a/libraries/chain/include/graphene/chain/event_group_evaluator.hpp +++ b/libraries/chain/include/graphene/chain/event_group_evaluator.hpp @@ -52,4 +52,13 @@ namespace graphene { namespace chain { private: sport_id_type sport_id; }; + + class event_group_delete_evaluator : public evaluator + { + public: + typedef event_group_delete_operation operation_type; + + void_result do_evaluate( const event_group_delete_operation& o ); + void_result do_apply( const event_group_delete_operation& o ); + }; } } // graphene::chain diff --git a/libraries/chain/include/graphene/chain/protocol/event_group.hpp b/libraries/chain/include/graphene/chain/protocol/event_group.hpp index 450273bc..d62ad356 100644 --- a/libraries/chain/include/graphene/chain/protocol/event_group.hpp +++ b/libraries/chain/include/graphene/chain/protocol/event_group.hpp @@ -71,6 +71,19 @@ struct event_group_update_operation : public base_operation void validate()const; }; +struct event_group_delete_operation : public base_operation +{ + struct fee_parameters_type { uint64_t fee = GRAPHENE_BLOCKCHAIN_PRECISION; }; + asset fee; + + event_group_id_type event_group_id; + + extensions_type extensions; + + account_id_type fee_payer()const { return GRAPHENE_WITNESS_ACCOUNT; } + void validate()const; +}; + } } @@ -81,3 +94,7 @@ FC_REFLECT( graphene::chain::event_group_create_operation, FC_REFLECT( graphene::chain::event_group_update_operation::fee_parameters_type, (fee) ) FC_REFLECT( graphene::chain::event_group_update_operation, (fee)(new_sport_id)(new_name)(event_group_id)(extensions) ) + +FC_REFLECT( graphene::chain::event_group_delete_operation::fee_parameters_type, (fee) ) +FC_REFLECT( graphene::chain::event_group_delete_operation, + (fee)(event_group_id)(extensions) ) diff --git a/libraries/chain/include/graphene/chain/protocol/operations.hpp b/libraries/chain/include/graphene/chain/protocol/operations.hpp index 7b4429e4..13b6d872 100644 --- a/libraries/chain/include/graphene/chain/protocol/operations.hpp +++ b/libraries/chain/include/graphene/chain/protocol/operations.hpp @@ -109,6 +109,7 @@ namespace graphene { namespace chain { sport_delete_operation, event_group_create_operation, event_group_update_operation, + event_group_delete_operation, event_create_operation, event_update_operation, betting_market_rules_create_operation, diff --git a/libraries/chain/protocol/event_group.cpp b/libraries/chain/protocol/event_group.cpp index ed003ef6..8abc0acb 100644 --- a/libraries/chain/protocol/event_group.cpp +++ b/libraries/chain/protocol/event_group.cpp @@ -35,5 +35,10 @@ void event_group_update_operation::validate() const FC_ASSERT( fee.amount >= 0 ); } +void event_group_delete_operation::validate() const +{ + FC_ASSERT( fee.amount >= 0 ); +} + } } // graphene::chain diff --git a/libraries/wallet/include/graphene/wallet/wallet.hpp b/libraries/wallet/include/graphene/wallet/wallet.hpp index 80df691f..5dca8b18 100644 --- a/libraries/wallet/include/graphene/wallet/wallet.hpp +++ b/libraries/wallet/include/graphene/wallet/wallet.hpp @@ -1627,6 +1627,12 @@ class wallet_api fc::optional name, bool broadcast = false); + signed_transaction propose_delete_event_group( + const string& proposing_account, + fc::time_point_sec expiration_time, + event_group_id_type event_group, + bool broadcast = false); + signed_transaction propose_create_event( const string& proposing_account, fc::time_point_sec expiration_time, diff --git a/libraries/wallet/wallet.cpp b/libraries/wallet/wallet.cpp index d075126d..74c285bf 100644 --- a/libraries/wallet/wallet.cpp +++ b/libraries/wallet/wallet.cpp @@ -5224,6 +5224,33 @@ signed_transaction wallet_api::propose_update_event_group( return my->sign_transaction(tx, broadcast); } + +signed_transaction wallet_api::propose_delete_event_group( + const string& proposing_account, + fc::time_point_sec expiration_time, + event_group_id_type event_group, + bool broadcast /*= false*/) +{ + FC_ASSERT( !is_locked() ); + const chain_parameters& current_params = get_global_properties().parameters; + + event_group_delete_operation event_group_delete_op; + event_group_delete_op.event_group_id = event_group; + + proposal_create_operation prop_op; + prop_op.expiration_time = expiration_time; + prop_op.review_period_seconds = current_params.committee_proposal_review_period; + prop_op.fee_paying_account = get_account(proposing_account).id; + prop_op.proposed_ops.emplace_back( event_group_delete_op ); + current_params.current_fees->set_fee( prop_op.proposed_ops.back().op ); + + signed_transaction tx; + tx.operations.push_back(prop_op); + my->set_operation_fees(tx, current_params.current_fees); + tx.validate(); + + return my->sign_transaction(tx, broadcast); +} signed_transaction wallet_api::propose_create_event( const string& proposing_account,