void Connection::HandleConnect(const boost::system::error_code & error) { if (error || HasError() || m_hive->HasStopped()) { StartError(error); } else { if (m_socket.is_open()) { OnConnect(m_socket.remote_endpoint().address().to_string(), m_socket.remote_endpoint().port()); } else { StartError(error); } } }
void NetworkConnection::HandleRecv(const boost::system::error_code & error, int32_t actual_bytes) { if (error || HasError() || m_service->HasStopped()) { if (m_socket.is_open()) { if (error == boost::asio::error::eof) //we got disconnected on the client side { OnError(error); //Disconnect(); } else StartError(error); } } else { m_recv_buffer.resize(actual_bytes); OnRecv(m_recv_buffer); m_pending_recvs.pop_front(); if (!m_pending_recvs.empty()) { StartRecv(m_pending_recvs.front()); } } }
void Acceptor::HandleTimer( const boost::system::error_code & error ) { if( error || HasError() || m_hive->HasStopped() ) { StartError( error ); } else { OnTimer( boost::posix_time::microsec_clock::local_time() - m_last_time ); StartTimer(); } }
void Connection::HandleSend( const boost::system::error_code & error, std::list< std::vector< uint8_t > >::iterator itr ) { if( error || HasError() || m_hive->HasStopped() ) { StartError( error ); } else { OnSend( *itr ); m_pending_sends.erase( itr ); StartSend(); } }
void NetworkConnection::HandleDisconnect(const boost::system::error_code & error) { if (error == boost::asio::error::connection_reset) { StartDisconnect(); OnDisconnect(); } else { StartError(error); } }
void Connection::HandleRecv( const boost::system::error_code & error, int32_t actual_bytes ) { if( error || HasError() || m_hive->HasStopped() ) { StartError( error ); } else { m_recv_buffer.resize( actual_bytes ); OnRecv( m_recv_buffer ); m_pending_recvs.pop_front(); if( !m_pending_recvs.empty() ) { StartRecv( m_pending_recvs.front() ); } } }
void NetworkConnection::HandleTimer(const boost::system::error_code & error) { if (!m_socket.is_open()) //socket disconnected { if (!m_disconnect_callback.empty()) m_disconnect_callback(); return; } if (error || HasError() || m_service->HasStopped()) { if (error != boost::asio::error::operation_aborted) StartError(error); } else { OnTimer(boost::posix_time::microsec_clock::local_time() - m_last_time); StartTimer(); } }
void Acceptor::HandleAccept( const boost::system::error_code & error, boost::shared_ptr< Connection > connection ) { if( error || HasError() || m_hive->HasStopped() ) { connection->StartError( error ); } else { if( connection->GetSocket().is_open() ) { connection->StartTimer(); if( OnAccept( connection, connection->GetSocket().remote_endpoint().address().to_string(), connection->GetSocket().remote_endpoint().port() ) ) { connection->OnAccept( m_acceptor.local_endpoint().address().to_string(), m_acceptor.local_endpoint().port() ); } } else { StartError( error ); } } }