//! control socket
boost::asio::ip::tcp::socket my_socket;
//! socket close mutex
- boost::mutex socket_mutex;
+ boost::mutex read_mutex;
+ boost::mutex write_mutex;
//! socket open flag
bool open_flag;
//! @return true is wait
//! @return false is not wait
bool tcp_session::is_thread_wait(){
- boost::mutex::scoped_lock scope_lock(thread_state_update_mutex);
bool res = false;
+ boost::mutex::scoped_lock scope_lock(thread_state_update_mutex);
if(thread_state.test(4) & thread_state.test(5))
res = true;
return res;
boost::system::error_code& ec){
Logger logger( LOG_CAT_L7VSD_SESSION, 9999, "tcp_socket::connect", __FILE__, __LINE__ );
- boost::mutex::scoped_lock scope_lock(socket_mutex);
+ boost::mutex::scoped_lock lk(read_mutex);
+ boost::mutex::scoped_lock lk2(write_mutex);
if(!open_flag){
my_socket.connect(connect_endpoint,ec);
//! accept socket
void tcp_socket::accept(){
- boost::mutex::scoped_lock scope_lock(socket_mutex);
+ boost::mutex::scoped_lock lk(read_mutex);
open_flag = true;
//----Debug log----------------------------------------------------------------------
if (LOG_LV_DEBUG == Logger::getLogLevel(LOG_CAT_L7VSD_SESSION)){
bool tcp_socket::close(boost::system::error_code& ec){
Logger logger( LOG_CAT_L7VSD_SESSION, 9999, "tcp_socket::close", __FILE__, __LINE__ );
- boost::mutex::scoped_lock scope_lock(socket_mutex);
+ boost::mutex::scoped_lock lk1(write_mutex);
+ boost::mutex::scoped_lock lk2(read_mutex);
//----Debug log----------------------------------------------------------------------
if (LOG_LV_DEBUG == Logger::getLogLevel(LOG_CAT_L7VSD_SESSION)){
if(open_flag){
boost::system::error_code& ec){
Logger logger( LOG_CAT_L7VSD_SESSION, 9999, "tcp_socket::write_some", __FILE__, __LINE__ );
- boost::mutex::scoped_lock scope_lock(socket_mutex);
+ boost::mutex::scoped_lock lk(write_mutex);
std::size_t res_size = 0;
res_size = my_socket.write_some(buffers,ec);
if(ec){
std::size_t tcp_socket::read_some(boost::asio::mutable_buffers_1 buffers,
boost::system::error_code& ec){
Logger logger( LOG_CAT_L7VSD_SESSION, 9999, "tcp_socket::read_some", __FILE__, __LINE__ );
-
- boost::mutex::scoped_lock scope_lock(socket_mutex);
+
+ boost::mutex::scoped_lock lk(read_mutex);
std::size_t res_size = 0;
res_size = my_socket.read_some(buffers,ec);
if(ec){
while(1){
if( ( l7vs::session_thread_control::WAIT == in_session->get_upthread_status() ) &&
( l7vs::session_thread_control::WAIT == in_session->get_downthread_status() ) ){
- usleep( 10 );
+ usleep( 5 );
break;
}
}
//switch status runing, session_thread_control
in_session->startupstream();
in_session->startdownstream();
-
+
//switch active a session
boost::thread::id t_id;
session_thread_control_ptr stc_ptr;
boost::format fmt1( "active session thread id = %d" );
fmt1 % t_id;
l7vs::Logger::putLogDebug( l7vs::LOG_CAT_L7VSD_VIRTUALSERVICE, 0, fmt1.str(), __FILE__, __LINE__ );
- }
- if( LOG_LV_DEBUG == l7vs::Logger::getLogLevel( l7vs::LOG_CAT_L7VSD_VIRTUALSERVICE ) ){
- boost::format fmt1( "pool_session.size = %d" );
- fmt1 % pool_sessions.size();
- l7vs::Logger::putLogDebug( l7vs::LOG_CAT_L7VSD_VIRTUALSERVICE, 0, fmt1.str(), __FILE__, __LINE__ );
- boost::format fmt2( "active_session.size = %d" );
- fmt2 % active_sessions.size();
+ boost::format fmt2( "pool_session.size = %d" );
+ fmt2 % pool_sessions.size();
l7vs::Logger::putLogDebug( l7vs::LOG_CAT_L7VSD_VIRTUALSERVICE, 0, fmt2.str(), __FILE__, __LINE__ );
- boost::format fmt3( "sorry_session.size = %d" );
- fmt3 % sorry_sessions.size();
+ boost::format fmt3( "active_session.size = %d" );
+ fmt3 % active_sessions.size();
l7vs::Logger::putLogDebug( l7vs::LOG_CAT_L7VSD_VIRTUALSERVICE, 0, fmt3.str(), __FILE__, __LINE__ );
+ boost::format fmt4( "sorry_session.size = %d" );
+ fmt4 % sorry_sessions.size();
+ l7vs::Logger::putLogDebug( l7vs::LOG_CAT_L7VSD_VIRTUALSERVICE, 0, fmt4.str(), __FILE__, __LINE__ );
+ }
+ if( LOG_LV_DEBUG == l7vs::Logger::getLogLevel( l7vs::LOG_CAT_L7VSD_VIRTUALSERVICE ) ){
}
}
-
//regist accept event handler
acceptor_.async_accept( stc_ptr->get_session()->get_client_socket(),
boost::bind( &l7vs::virtualservice_tcp::handle_accept, this, stc_ptr,