From a80164645fdbc96e7f0cf88e52be5f8067f6b7ae Mon Sep 17 00:00:00 2001 From: Daniel Larimer Date: Fri, 14 Feb 2014 20:32:23 -0500 Subject: [PATCH] Update tcp_socket listen on single endpoint --- include/fc/network/tcp_socket.hpp | 7 ++++--- src/network/tcp_socket.cpp | 14 +++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/include/fc/network/tcp_socket.hpp b/include/fc/network/tcp_socket.hpp index 6f58905..e66c1a5 100644 --- a/include/fc/network/tcp_socket.hpp +++ b/include/fc/network/tcp_socket.hpp @@ -52,9 +52,10 @@ namespace fc { tcp_server(); ~tcp_server(); - void close(); - void accept( tcp_socket& s ); - void listen( uint16_t port ); + void close(); + void accept( tcp_socket& s ); + void listen( uint16_t port ); + void listen( const fc::ip::endpoint& ep ); uint16_t get_port()const; private: diff --git a/src/network/tcp_socket.cpp b/src/network/tcp_socket.cpp index 4ca10b5..74297b6 100644 --- a/src/network/tcp_socket.cpp +++ b/src/network/tcp_socket.cpp @@ -59,9 +59,12 @@ namespace fc { class tcp_server::impl { public: - impl(uint16_t port): - _accept( fc::asio::default_io_service(), boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port) ){ - } + impl(uint16_t port) + :_accept( fc::asio::default_io_service(), boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port) ){} + + impl(const fc::ip::endpoint& ep ) + :_accept( fc::asio::default_io_service(), boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4( ep.get_address()), ep.port()) ){} + ~impl(){ try { _accept.close(); @@ -100,6 +103,11 @@ namespace fc { if( my ) delete my; my = new impl(port); } + void tcp_server::listen( const fc::ip::endpoint& ep ) + { + if( my ) delete my; + my = new impl(ep); + } uint16_t tcp_server::get_port()const {