BTC event handler synchronized
Sync object (mutex) added to sidechain_net_handler_bitcoin::handle_event
This commit is contained in:
parent
9cc4557e8a
commit
25866711ca
2 changed files with 11 additions and 4 deletions
|
|
@ -7,6 +7,8 @@
|
||||||
|
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
#include <fc/network/http/connection.hpp>
|
#include <fc/network/http/connection.hpp>
|
||||||
#include <graphene/peerplays_sidechain/bitcoin/bitcoin_address.hpp>
|
#include <graphene/peerplays_sidechain/bitcoin/bitcoin_address.hpp>
|
||||||
|
|
||||||
|
|
@ -114,6 +116,9 @@ private:
|
||||||
fc::future<void> on_changed_objects_task;
|
fc::future<void> on_changed_objects_task;
|
||||||
bitcoin::bitcoin_address::network network_type;
|
bitcoin::bitcoin_address::network network_type;
|
||||||
|
|
||||||
|
std::mutex event_handler_mutex;
|
||||||
|
typedef std::lock_guard<decltype(event_handler_mutex)> scoped_lock;
|
||||||
|
|
||||||
std::string create_primary_wallet_address(const std::vector<son_info> &son_pubkeys);
|
std::string create_primary_wallet_address(const std::vector<son_info> &son_pubkeys);
|
||||||
|
|
||||||
std::string create_primary_wallet_transaction(const son_wallet_object &prev_swo, std::string new_sw_address);
|
std::string create_primary_wallet_transaction(const son_wallet_object &prev_swo, std::string new_sw_address);
|
||||||
|
|
|
||||||
|
|
@ -1801,10 +1801,12 @@ std::string sidechain_net_handler_bitcoin::send_transaction(const sidechain_tran
|
||||||
|
|
||||||
void sidechain_net_handler_bitcoin::handle_event(const std::string &event_data) {
|
void sidechain_net_handler_bitcoin::handle_event(const std::string &event_data) {
|
||||||
std::string block = bitcoin_client->getblock(event_data);
|
std::string block = bitcoin_client->getblock(event_data);
|
||||||
if (block != "") {
|
if (block.empty())
|
||||||
const auto &vins = extract_info_from_block(block);
|
return;
|
||||||
|
|
||||||
const auto &sidechain_addresses_idx = database.get_index_type<sidechain_address_index>().indices().get<by_sidechain_and_deposit_address_and_expires>();
|
auto vins = extract_info_from_block(block);
|
||||||
|
scoped_lock interlock(event_handler_mutex);
|
||||||
|
const auto & sidechain_addresses_idx = database.get_index_type<sidechain_address_index>().indices().get<by_sidechain_and_deposit_address_and_expires>();
|
||||||
|
|
||||||
for (const auto &v : vins) {
|
for (const auto &v : vins) {
|
||||||
// !!! EXTRACT DEPOSIT ADDRESS FROM SIDECHAIN ADDRESS OBJECT
|
// !!! EXTRACT DEPOSIT ADDRESS FROM SIDECHAIN ADDRESS OBJECT
|
||||||
|
|
@ -1833,7 +1835,7 @@ void sidechain_net_handler_bitcoin::handle_event(const std::string &event_data)
|
||||||
sed.peerplays_asset = asset(sed.sidechain_amount * btc_price.base.amount / btc_price.quote.amount);
|
sed.peerplays_asset = asset(sed.sidechain_amount * btc_price.base.amount / btc_price.quote.amount);
|
||||||
sidechain_event_data_received(sed);
|
sidechain_event_data_received(sed);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string sidechain_net_handler_bitcoin::get_redeemscript_for_userdeposit(const std::string &user_address) {
|
std::string sidechain_net_handler_bitcoin::get_redeemscript_for_userdeposit(const std::string &user_address) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue