OSDN Git Service

チューニング:ScopedLoggerによるオブジェクトの生成と廃棄が毎回起こるのをなくした
authorokada <okada@1ed66053-1c2d-0410-8867-f7571e6e31d3>
Mon, 22 Jun 2009 08:10:45 +0000 (08:10 +0000)
committerokada <okada@1ed66053-1c2d-0410-8867-f7571e6e31d3>
Mon, 22 Jun 2009 08:10:45 +0000 (08:10 +0000)
git-svn-id: http://10.144.169.20/repos/um/branches/l7vsd-3.x-shamshel-refine@7953 1ed66053-1c2d-0410-8867-f7571e6e31d3

include/tcp_socket.h
src/tcp_socket.cpp

index 7b0c880..c4bd847 100644 (file)
@@ -30,6 +30,8 @@
 #include <boost/thread/mutex.hpp>
 
 #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
index 37303de..c248708 100644 (file)
 #include <boost/thread/thread.hpp>
 
 #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