From 0c42d7ea6f59992aecb8b51ff1963d5eba0ad521 Mon Sep 17 00:00:00 2001 From: Alexander Suslikov Date: Sat, 12 Jan 2019 18:18:26 +0300 Subject: [PATCH] Displaced connection check from zmq_listener to sidechain_net_manager --- .../sidechain/network/bitcoin_rpc_client.cpp | 2 ++ .../sidechain/network/bitcoin_rpc_client.hpp | 1 - .../sidechain/network/zmq_listener.hpp | 5 +--- .../network/sidechain_net_manager.cpp | 23 +++++++++++++------ libraries/sidechain/network/zmq_listener.cpp | 11 +-------- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/libraries/sidechain/network/bitcoin_rpc_client.cpp b/libraries/sidechain/network/bitcoin_rpc_client.cpp index be050646..b9f25d2b 100644 --- a/libraries/sidechain/network/bitcoin_rpc_client.cpp +++ b/libraries/sidechain/network/bitcoin_rpc_client.cpp @@ -2,6 +2,8 @@ #include +#include + #include #include diff --git a/libraries/sidechain/network/include/sidechain/network/bitcoin_rpc_client.hpp b/libraries/sidechain/network/include/sidechain/network/bitcoin_rpc_client.hpp index 0fa18352..96a32cd8 100644 --- a/libraries/sidechain/network/include/sidechain/network/bitcoin_rpc_client.hpp +++ b/libraries/sidechain/network/include/sidechain/network/bitcoin_rpc_client.hpp @@ -2,7 +2,6 @@ #include #include -#include namespace sidechain { diff --git a/libraries/sidechain/network/include/sidechain/network/zmq_listener.hpp b/libraries/sidechain/network/include/sidechain/network/zmq_listener.hpp index 33150b9d..d077bac7 100644 --- a/libraries/sidechain/network/include/sidechain/network/zmq_listener.hpp +++ b/libraries/sidechain/network/include/sidechain/network/zmq_listener.hpp @@ -3,8 +3,6 @@ #include #include -#include -#include #include #include @@ -16,7 +14,7 @@ class zmq_listener public: - zmq_listener( std::string _ip, uint32_t _zmq, uint32_t _rpc ); + zmq_listener( std::string _ip, uint32_t _zmq ); bool connection_is_not_defined() const { return zmq_port == 0; } @@ -29,7 +27,6 @@ private: std::string ip; uint32_t zmq_port; - uint32_t rpc_port; zmq::context_t ctx; zmq::socket_t socket; diff --git a/libraries/sidechain/network/sidechain_net_manager.cpp b/libraries/sidechain/network/sidechain_net_manager.cpp index 220a30c0..085ea540 100644 --- a/libraries/sidechain/network/sidechain_net_manager.cpp +++ b/libraries/sidechain/network/sidechain_net_manager.cpp @@ -1,4 +1,8 @@ #include + +#include +#include + #include #include @@ -7,20 +11,25 @@ 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 ) + uint32_t _zmq, uint32_t _rpc, std::string _user, std::string _password ) { - listener->block_received.connect( [this]( const std::string& block_hash ) { - std::thread( &sidechain_net_manager::handle_block, this, block_hash ).detach(); - }); + initialize_manager(_db, _ip, _zmq, _rpc, _user, _password ); } 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( _db ); - listener = std::unique_ptr( new zmq_listener( _ip, _zmq, _rpc ) ); + listener = std::unique_ptr( new zmq_listener( _ip, _zmq ) ); bitcoin_client = std::unique_ptr( new bitcoin_rpc_client( _ip, _rpc, _user, _password ) ); + db = std::unique_ptr( _db ); + + fc::http::connection conn; + try { + conn.connect_to( fc::ip::endpoint( fc::ip::address( _ip ), _rpc ) ); + } catch ( fc::exception e ) { + elog( "No BTC node running at ${ip} or wrong rpc port: ${port}", ("ip", _ip) ("port", _rpc) ); + FC_ASSERT( false ); + } listener->block_received.connect([this]( const std::string& block_hash ) { std::thread( &sidechain_net_manager::handle_block, this, block_hash).detach(); diff --git a/libraries/sidechain/network/zmq_listener.cpp b/libraries/sidechain/network/zmq_listener.cpp index 91644cac..eb697a75 100644 --- a/libraries/sidechain/network/zmq_listener.cpp +++ b/libraries/sidechain/network/zmq_listener.cpp @@ -4,8 +4,7 @@ namespace sidechain { -zmq_listener::zmq_listener( std::string _ip, uint32_t _zmq, uint32_t _rpc ): - ip( _ip ), zmq_port( _zmq ), rpc_port( _rpc ), ctx( 1 ), socket( ctx, ZMQ_SUB ) +zmq_listener::zmq_listener( std::string _ip, uint32_t _zmq ): ip( _ip ), zmq_port( _zmq ), ctx( 1 ), socket( ctx, ZMQ_SUB ) { std::thread( &zmq_listener::handle_zmq, this ).detach(); } @@ -34,14 +33,6 @@ void zmq_listener::handle_zmq() socket.setsockopt( ZMQ_SUBSCRIBE, "hashblock", 0 ); socket.connect( "tcp://" + ip + ":" + std::to_string( zmq_port ) ); - fc::http::connection conn; - try { - conn.connect_to( fc::ip::endpoint( fc::ip::address( ip ), rpc_port ) ); - } catch ( fc::exception e ) { - elog( "No BTC node running at ${ip} or wrong rpc port: ${port}", ("ip", ip) ("port", rpc_port) ); - FC_ASSERT( false ); - } - while ( true ) { auto msg = receive_multipart(); const auto header = std::string( static_cast( msg[0].data() ), msg[0].size() );