From: okada Date: Mon, 22 Jun 2009 08:10:45 +0000 (+0000) Subject: チューニング:ScopedLoggerによるオブジェクトの生成と廃棄が毎回起こるのをなくした X-Git-Tag: v3.0.1~6^2~221^2~499 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=e5c522aa09115b0f0b2d9d370383f84801d73326;p=ultramonkey-l7%2Fultramonkey-l7-v3.git チューニング:ScopedLoggerによるオブジェクトの生成と廃棄が毎回起こるのをなくした git-svn-id: http://10.144.169.20/repos/um/branches/l7vsd-3.x-shamshel-refine@7953 1ed66053-1c2d-0410-8867-f7571e6e31d3 --- diff --git a/include/tcp_socket.h b/include/tcp_socket.h index 7b0c8803..c4bd8475 100644 --- a/include/tcp_socket.h +++ b/include/tcp_socket.h @@ -30,6 +30,8 @@ #include #include "wrlock.h" +#include "utility.h" +#include "logger.h" namespace l7vs{ @@ -56,17 +58,38 @@ namespace l7vs{ //! construcor //! @param[in/out] socket use io service object //! @param[in] set socket option info - tcp_socket(boost::asio::io_service& io); + tcp_socket(boost::asio::io_service& io): my_socket(io), open_flag(false){ + opt_info.nodelay_opt = false; + opt_info.cork_opt = false; + opt_info.quickack_opt = false; + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 1, "tcp_socket::tcp_socket", __FILE__, __LINE__ ); + } + } //! construcor //! @param[in/out] socket use io service object //! @param[in] set socket option info - tcp_socket(boost::asio::io_service& io,const tcp_socket_option_info set_option); + tcp_socket(boost::asio::io_service& io, const tcp_socket_option_info set_option): my_socket(io), open_flag(false), opt_info(set_option){ + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 1, "tcp_socket::tcp_socket", __FILE__, __LINE__ ); + } + } //! destructor - ~tcp_socket(); + ~tcp_socket(){ + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 2, "tcp_socket::~tcp_socket", __FILE__, __LINE__ ); + } + } //! get reference control socket //! @return reference control socket - boost::asio::ip::tcp::socket& get_socket(); + boost::asio::ip::tcp::socket& get_socket(){ + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 3, "tcp_socket::get_socket", __FILE__, __LINE__ ); + } + return my_socket; + } + //! connect socket //! @param[in] connect_endpoint is connection endpoint //! @param[out] ec is reference error code object @@ -94,7 +117,9 @@ namespace l7vs{ //! is open //! @return true is open //! @return false is close - bool is_open(); + bool is_open(){ + return open_flag; + } protected: //! control socket diff --git a/src/tcp_socket.cpp b/src/tcp_socket.cpp index 37303def..c2487080 100644 --- a/src/tcp_socket.cpp +++ b/src/tcp_socket.cpp @@ -25,41 +25,9 @@ #include #include "tcp_socket.h" -#include "logger.h" -#include "utility.h" namespace l7vs{ - //! construcor - tcp_socket::tcp_socket(boost::asio::io_service& io): - my_socket(io), - open_flag(false){ - opt_info.nodelay_opt = false; - opt_info.cork_opt = false; - opt_info.quickack_opt = false; - Logger logger( LOG_CAT_L7VSD_SESSION, 1, "tcp_socket::tcp_socket", __FILE__, __LINE__ ); - } - - //! construcor - tcp_socket::tcp_socket(boost::asio::io_service& io,tcp_socket_option_info set_option): - my_socket(io), - open_flag(false), - opt_info(set_option){ - Logger logger( LOG_CAT_L7VSD_SESSION, 1, "tcp_socket::tcp_socket", __FILE__, __LINE__ ); - } - - //! destructor - tcp_socket::~tcp_socket(){ - Logger logger( LOG_CAT_L7VSD_SESSION, 2, "tcp_socket::~tcp_socket", __FILE__, __LINE__ ); - } - - //! get reference control socket - //! @return reference control socket - boost::asio::ip::tcp::socket& tcp_socket::get_socket(){ - Logger logger( LOG_CAT_L7VSD_SESSION, 3, "tcp_socket::get_socket", __FILE__, __LINE__ ); - return my_socket; - } - //! connect socket //! @param[in] connect_endpoint is connection endpoint //! @param[out] ec is reference error code object @@ -67,9 +35,11 @@ namespace l7vs{ //! @return false is connect failure bool tcp_socket::connect(boost::asio::ip::tcp::endpoint connect_endpoint, boost::system::error_code& ec){ - Logger logger( LOG_CAT_L7VSD_SESSION, 4, "tcp_socket::connect", __FILE__, __LINE__ ); - - rw_scoped_lock scope_lock(close_mutex); + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 4, "in_function : tcp_socket::connect", __FILE__, __LINE__ ); + } + + rw_scoped_lock scope_lock(close_mutex); if(likely(!open_flag)){ my_socket.connect(connect_endpoint,ec); @@ -111,6 +81,9 @@ namespace l7vs{ open_flag = false; } } + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 4, "out_function : tcp_socket::connect", __FILE__, __LINE__ ); + } return open_flag; } @@ -161,7 +134,9 @@ namespace l7vs{ //! @return true is socket close //! @return false is not open socket bool tcp_socket::close(boost::system::error_code& ec){ - Logger logger( LOG_CAT_L7VSD_SESSION, 7, "tcp_socket::close", __FILE__, __LINE__ ); + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 7, "in_function : tcp_socket::close", __FILE__, __LINE__ ); + } rw_scoped_lock scope_lock(close_mutex); @@ -186,17 +161,25 @@ namespace l7vs{ } my_socket.close(ec); + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 7, "out_function : tcp_socket::close", __FILE__, __LINE__ ); + } return bres; } //! set non blocking mode of the socket //! @return ec is reference error code object bool tcp_socket::set_non_blocking_mode(boost::system::error_code& ec){ - Logger logger( LOG_CAT_L7VSD_SESSION, 9, "tcp_socket::set_non_blocking_mode", __FILE__, __LINE__ ); + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 9, "in_function : tcp_socket::set_non_blocking_mode", __FILE__, __LINE__ ); + } boost::asio::socket_base::non_blocking_io cmd(true); my_socket.io_control(cmd,ec); + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 9, "out_function : tcp_socket::set_non_blocking_mode", __FILE__, __LINE__ ); + } return true; } @@ -204,11 +187,12 @@ namespace l7vs{ //! @param[in] buffers is wite data buffer //! @param[out] ec is reference error code object //! @return write data size - std::size_t tcp_socket::write_some(boost::asio::mutable_buffers_1 buffers, - boost::system::error_code& ec){ - Logger logger( LOG_CAT_L7VSD_SESSION, 10, "tcp_socket::write_some", __FILE__, __LINE__ ); - - rd_scoped_lock scope_lock(close_mutex); + std::size_t tcp_socket::write_some(boost::asio::mutable_buffers_1 buffers, boost::system::error_code& ec){ + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 10, "in_function : tcp_socket::write_some", __FILE__, __LINE__ ); + } + + rd_scoped_lock scope_lock(close_mutex); std::size_t res_size = 0; res_size = my_socket.write_some(buffers,ec); if(unlikely(ec)){ @@ -217,7 +201,10 @@ namespace l7vs{ ec.clear(); } } - + + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 10, "out_function : tcp_socket::write_some", __FILE__, __LINE__ ); + } return res_size; } @@ -227,48 +214,45 @@ namespace l7vs{ //! @return read data size std::size_t tcp_socket::read_some(boost::asio::mutable_buffers_1 buffers, boost::system::error_code& ec){ - Logger logger( LOG_CAT_L7VSD_SESSION, 0011, "tcp_socket::read_some", __FILE__, __LINE__ ); + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 11, "in_function : tcp_socket::read_some", __FILE__, __LINE__ ); + } - rd_scoped_lock scope_lock(close_mutex); + rd_scoped_lock scope_lock(close_mutex); std::size_t res_size = 0; - if(unlikely(open_flag)){ - //set TCP_QUICKACK - if(opt_info.quickack_opt){ - int val = opt_info.quickack_val; - size_t len = sizeof(val); - boost::asio::detail::socket_ops::setsockopt(my_socket.native(),IPPROTO_TCP,TCP_QUICKACK,&val,len,ec); - if (unlikely(!open_flag)) { - ec.clear(); - } - if(unlikely(ec)){ - //ERROR - // Logger::putLogError( LOG_CAT_L7VSD_SESSION, 104, "socket option(TCP_QUICKACK) set failed" , __FILE__, __LINE__ ); - std::stringstream buf; - buf << "Thread ID["; - buf << boost::this_thread::get_id(); - buf << "] socket option(TCP_QUICKACK) set failed : "; - buf << ec.message(); - Logger::putLogError( LOG_CAT_L7VSD_SESSION, 104, buf.str() , __FILE__, __LINE__ ); - } - } - res_size = my_socket.read_some(buffers,ec); - if(unlikely(ec)){ - if (unlikely(!open_flag)) { - res_size = 0; - ec.clear(); - } - } + if(unlikely(open_flag)){ + //set TCP_QUICKACK + if(opt_info.quickack_opt){ + int val = opt_info.quickack_val; + size_t len = sizeof(val); + boost::asio::detail::socket_ops::setsockopt(my_socket.native(),IPPROTO_TCP,TCP_QUICKACK,&val,len,ec); + if (unlikely(!open_flag)) { + ec.clear(); + } + if(unlikely(ec)){ + //ERROR + std::stringstream buf; + buf << "Thread ID["; + buf << boost::this_thread::get_id(); + buf << "] socket option(TCP_QUICKACK) set failed : "; + buf << ec.message(); + Logger::putLogError( LOG_CAT_L7VSD_SESSION, 104, buf.str() , __FILE__, __LINE__ ); + } + } + res_size = my_socket.read_some(buffers,ec); + if(unlikely(ec)){ + if (unlikely(!open_flag)) { + res_size = 0; + ec.clear(); + } + } - } + } + if( unlikely( LOG_LV_DEBUG == Logger::getLogLevel( LOG_CAT_L7VSD_SESSION ) ) ){ + Logger::putLogDebug( LOG_CAT_L7VSD_SESSION, 11, "out_function : tcp_socket::read_some", __FILE__, __LINE__ ); + } return res_size; } - //! is open - //! @return true is open - //! @return false is close - bool tcp_socket::is_open(){ - return open_flag; - } - }// namespace l7vs