#include <boost/thread/mutex.hpp>
#include "wrlock.h"
+#include "utility.h"
+#include "logger.h"
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
//! is open
//! @return true is open
//! @return false is close
- bool is_open();
+ bool is_open(){
+ return open_flag;
+ }
protected:
//! control socket
#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
//! @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);
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;
}
//! @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);
}
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;
}
//! @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)){
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;
}
//! @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