本文整理汇总了C++中CTcpSocket::set_socket_status方法的典型用法代码示例。如果您正苦于以下问题:C++ CTcpSocket::set_socket_status方法的具体用法?C++ CTcpSocket::set_socket_status怎么用?C++ CTcpSocket::set_socket_status使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CTcpSocket
的用法示例。
在下文中一共展示了CTcpSocket::set_socket_status方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: socket_check_cb
void CNetBackend::socket_check_cb(ev::timer &w, int32 revents)
{
if ( EV_ERROR & revents )
{
GERROR() << "check socket connect timeout call back error:" << strerror(errno) << "\n";
w.stop();
abort_work( "socket_check_cb fail" );
}
int64 _now = ev_now(loop);
CTcpSocket *psocket = null;
vector<CTcpSocket *>::iterator itr = m_tcp_sockets.begin();
while ( itr != m_tcp_sockets.end() )
{
psocket = *itr;
itr ++;
if ( !psocket ) //this fd not use
continue;
if ( ES_CONNECTED == psocket->get_socket_status()
&& _now - psocket->get_connect_time() > DISCONNECT_TIMEOUT )
{
psocket->close_socket(); //该状态未与游戏服建立连接,可以直接关闭
psocket->set_socket_status( ES_NONE );
}
}
}
示例2: add_socket
void CNetBackend::add_socket( int32 fd,const struct sockaddr_in address )
{
if ( fd > MAX_FD )
{
GERROR() << "add_socket MAX_FD limit\n";
return;
}
while ( (fd > static_cast<int32>(m_tcp_sockets.size()-1)) && (MAX_FD > m_tcp_sockets.size()) ) //-1数组下标从0开始
{
m_tcp_sockets.resize( DEFAULT_SOCKETS,null );
GWARNING() << "socket vector resize occured\n";
}
CTcpSocket *psocket = m_tcp_sockets[fd];
if ( null == psocket )
{
m_tcp_sockets[fd] = new CTcpSocket();//该构造函数初始化变量
psocket = m_tcp_sockets[fd];
}
psocket->uninit_socket(); //clean old data
psocket->set_socket_fd( fd );
psocket->set_socket_address( address );
psocket->init_socket();
psocket->set_socket_status( ES_CONNECTED );
psocket->set_connect_time( ev_now(loop) ); //use ev_now() instead of time()
psocket->start();
}