SON connection pool.
This commit is contained in:
parent
f209ab8ee6
commit
6e0064aefe
2 changed files with 20 additions and 2 deletions
|
|
@ -52,7 +52,8 @@ private:
|
||||||
std::string rpc_password;
|
std::string rpc_password;
|
||||||
std::string wallet_account_name;
|
std::string wallet_account_name;
|
||||||
|
|
||||||
hive_rpc_client *rpc_client;
|
std::vector<hive_rpc_client*> rpc_clients;
|
||||||
|
int n_active_rpc_client;
|
||||||
|
|
||||||
hive::chain_id_type chain_id;
|
hive::chain_id_type chain_id;
|
||||||
hive::network network_type;
|
hive::network network_type;
|
||||||
|
|
@ -63,6 +64,7 @@ private:
|
||||||
void schedule_hive_listener();
|
void schedule_hive_listener();
|
||||||
void hive_listener_loop();
|
void hive_listener_loop();
|
||||||
void handle_event(const std::string &event_data);
|
void handle_event(const std::string &event_data);
|
||||||
|
hive_rpc_client *get_active_rpc_client();
|
||||||
};
|
};
|
||||||
|
|
||||||
}} // namespace graphene::peerplays_sidechain
|
}} // namespace graphene::peerplays_sidechain
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,9 @@ sidechain_net_handler_hive::sidechain_net_handler_hive(peerplays_sidechain_plugi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rpc_client = new hive_rpc_client(rpc_url, rpc_user, rpc_password, debug_rpc_calls);
|
hive_rpc_client *rpc_client = new hive_rpc_client(rpc_url, rpc_user, rpc_password, debug_rpc_calls);
|
||||||
|
rpc_clients.push_back(rpc_client);
|
||||||
|
n_active_rpc_client = 0;
|
||||||
|
|
||||||
const std::string chain_id_str = rpc_client->get_chain_id();
|
const std::string chain_id_str = rpc_client->get_chain_id();
|
||||||
if (chain_id_str.empty()) {
|
if (chain_id_str.empty()) {
|
||||||
|
|
@ -254,6 +256,7 @@ bool sidechain_net_handler_hive::process_proposal(const proposal_object &po) {
|
||||||
account_auths[wallet_son.public_key] = wallet_son.weight;
|
account_auths[wallet_son.public_key] = wallet_son.weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
const std::string memo_key = rpc_client->get_account_memo_key(wallet_account_name);
|
const std::string memo_key = rpc_client->get_account_memo_key(wallet_account_name);
|
||||||
|
|
||||||
hive::authority active;
|
hive::authority active;
|
||||||
|
|
@ -303,6 +306,7 @@ bool sidechain_net_handler_hive::process_proposal(const proposal_object &po) {
|
||||||
uint64_t swdo_sidechain_amount = swdo->sidechain_amount.value;
|
uint64_t swdo_sidechain_amount = swdo->sidechain_amount.value;
|
||||||
uint64_t swdo_op_idx = std::stoll(swdo->sidechain_uid.substr(swdo->sidechain_uid.find_last_of("-")));
|
uint64_t swdo_op_idx = std::stoll(swdo->sidechain_uid.substr(swdo->sidechain_uid.find_last_of("-")));
|
||||||
|
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
const std::string tx_str = rpc_client->account_history_api_get_transaction(swdo_txid);
|
const std::string tx_str = rpc_client->account_history_api_get_transaction(swdo_txid);
|
||||||
if (tx_str != "") {
|
if (tx_str != "") {
|
||||||
|
|
||||||
|
|
@ -499,6 +503,7 @@ void sidechain_net_handler_hive::process_primary_wallet() {
|
||||||
account_auths[active_son.public_key] = active_son.weight;
|
account_auths[active_son.public_key] = active_son.weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
const std::string memo_key = rpc_client->get_account_memo_key(wallet_account_name);
|
const std::string memo_key = rpc_client->get_account_memo_key(wallet_account_name);
|
||||||
|
|
||||||
if (memo_key.empty()) {
|
if (memo_key.empty()) {
|
||||||
|
|
@ -672,6 +677,7 @@ bool sidechain_net_handler_hive::process_withdrawal(const son_wallet_withdraw_ob
|
||||||
t_op.amount.symbol = symbol;
|
t_op.amount.symbol = symbol;
|
||||||
t_op.memo = "";
|
t_op.memo = "";
|
||||||
|
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
const std::string block_id_str = rpc_client->get_head_block_id();
|
const std::string block_id_str = rpc_client->get_head_block_id();
|
||||||
hive::block_id_type head_block_id(block_id_str);
|
hive::block_id_type head_block_id(block_id_str);
|
||||||
|
|
||||||
|
|
@ -731,6 +737,7 @@ std::string sidechain_net_handler_hive::process_sidechain_transaction(const side
|
||||||
hive::signed_transaction htrx;
|
hive::signed_transaction htrx;
|
||||||
fc::raw::unpack(ss_trx, htrx, 1000);
|
fc::raw::unpack(ss_trx, htrx, 1000);
|
||||||
|
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
const std::string chain_id_str = rpc_client->get_chain_id();
|
const std::string chain_id_str = rpc_client->get_chain_id();
|
||||||
const hive::chain_id_type chain_id(chain_id_str);
|
const hive::chain_id_type chain_id(chain_id_str);
|
||||||
|
|
||||||
|
|
@ -759,6 +766,7 @@ std::string sidechain_net_handler_hive::send_sidechain_transaction(const sidecha
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string params = fc::json::to_string(htrx);
|
std::string params = fc::json::to_string(htrx);
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
rpc_client->network_broadcast_api_broadcast_transaction(params);
|
rpc_client->network_broadcast_api_broadcast_transaction(params);
|
||||||
|
|
||||||
return htrx.id().str();
|
return htrx.id().str();
|
||||||
|
|
@ -774,6 +782,7 @@ bool sidechain_net_handler_hive::settle_sidechain_transaction(const sidechain_tr
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
const std::string tx_str = rpc_client->account_history_api_get_transaction(sto.sidechain_transaction);
|
const std::string tx_str = rpc_client->account_history_api_get_transaction(sto.sidechain_transaction);
|
||||||
if (tx_str != "") {
|
if (tx_str != "") {
|
||||||
|
|
||||||
|
|
@ -821,6 +830,7 @@ void sidechain_net_handler_hive::schedule_hive_listener() {
|
||||||
void sidechain_net_handler_hive::hive_listener_loop() {
|
void sidechain_net_handler_hive::hive_listener_loop() {
|
||||||
schedule_hive_listener();
|
schedule_hive_listener();
|
||||||
|
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
const std::string reply = rpc_client->database_api_get_dynamic_global_properties();
|
const std::string reply = rpc_client->database_api_get_dynamic_global_properties();
|
||||||
if (!reply.empty()) {
|
if (!reply.empty()) {
|
||||||
std::stringstream ss(reply);
|
std::stringstream ss(reply);
|
||||||
|
|
@ -848,6 +858,7 @@ void sidechain_net_handler_hive::hive_listener_loop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void sidechain_net_handler_hive::handle_event(const std::string &event_data) {
|
void sidechain_net_handler_hive::handle_event(const std::string &event_data) {
|
||||||
|
hive_rpc_client *rpc_client = get_active_rpc_client();
|
||||||
const std::string block = rpc_client->block_api_get_block(std::atoll(event_data.c_str()));
|
const std::string block = rpc_client->block_api_get_block(std::atoll(event_data.c_str()));
|
||||||
if (block != "") {
|
if (block != "") {
|
||||||
add_to_son_listener_log("BLOCK : " + event_data);
|
add_to_son_listener_log("BLOCK : " + event_data);
|
||||||
|
|
@ -948,4 +959,9 @@ void sidechain_net_handler_hive::handle_event(const std::string &event_data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hive_rpc_client *sidechain_net_handler_hive::get_active_rpc_client()
|
||||||
|
{
|
||||||
|
return rpc_clients[n_active_rpc_client];
|
||||||
|
}
|
||||||
|
|
||||||
}} // namespace graphene::peerplays_sidechain
|
}} // namespace graphene::peerplays_sidechain
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue