peerplays_migrated/libraries/sidechain/network/sidechain_net_manager.cpp

63 lines
No EOL
2 KiB
C++

#include <sidechain/network/sidechain_net_manager.hpp>
#include <thread>
namespace sidechain {
sidechain_net_manager::sidechain_net_manager( graphene::chain::database* _db, std::string _ip,
uint32_t _zmq, uint32_t _rpc, std::string _user, std::string _password ):
listener( new zmq_listener( _ip, _zmq, _rpc ) ), bitcoin_client( new bitcoin_rpc_client( _ip, _rpc, _user, _password ) ), db( _db )
{
listener->block_received.connect( [this]( const std::string& block_hash ) {
std::thread( &sidechain_net_manager::handle_block, this, block_hash ).detach();
});
}
void sidechain_net_manager::initialize_manager( graphene::chain::database* _db, std::string _ip,
uint32_t _zmq, uint32_t _rpc, std::string _user, std::string _password )
{
db = std::unique_ptr<graphene::chain::database>( _db );
listener = std::unique_ptr<zmq_listener>( new zmq_listener( _ip, _zmq, _rpc ) );
bitcoin_client = std::unique_ptr<bitcoin_rpc_client>( new bitcoin_rpc_client( _ip, _rpc, _user, _password ) );
listener->block_received.connect([this]( const std::string& block_hash ) {
std::thread( &sidechain_net_manager::handle_block, this, block_hash).detach();
} );
}
void sidechain_net_manager::update_tx_infos( const std::string& block_hash )
{
std::string block = bitcoin_client->receive_full_block( block_hash );
if( block != "" ) {
}
}
void sidechain_net_manager::update_tx_approvals()
{
}
void sidechain_net_manager::update_estimated_fee()
{
auto estimated_fee = bitcoin_client->receive_estimated_fee();
}
void sidechain_net_manager::send_btc_tx()
{
FC_ASSERT( !bitcoin_client->connection_is_not_defined() );
}
bool sidechain_net_manager::connection_is_not_defined() const
{
return listener->connection_is_not_defined() && bitcoin_client->connection_is_not_defined();
}
void sidechain_net_manager::handle_block( const std::string& block_hash )
{
update_tx_approvals();
update_estimated_fee();
update_tx_infos( block_hash );
}
}