本文整理汇总了C++中TcpConnection::gethandle方法的典型用法代码示例。如果您正苦于以下问题:C++ TcpConnection::gethandle方法的具体用法?C++ TcpConnection::gethandle怎么用?C++ TcpConnection::gethandle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TcpConnection
的用法示例。
在下文中一共展示了TcpConnection::gethandle方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: g
//暂不支持timeout清理工作
void NetWork::OnlineUser::check_timeout(std::map<int, int> &timeout_list)
{
TcpConnection *conn = NULL;
time_t now = time(0);
Guard g(_mutex);
ONLINE_USER_ITER iter = _conns.begin();
list<int> timeout_conns;
for (; iter != _conns.end(); ++iter) {
conn = iter->second;
conn->add_ref();
//连接超时检测
if (conn->getstate() == CONNECTING || conn->getstate() == CRYPTREGING) {
//连接超时时间是5s
if (now - conn->get_last_active_time() > 5) {
LOGW("handle :%d connect timeout", conn->gethandle());
//!!!注意:close不能再此处调用!否则与外层的_conns循环混到一起了
//close(conn->gethandle());
//onClose(conn->gethandle(), SOCKET_ERROR_TIMEOUT);
conn->set_last_error(SOCKET_ERROR_CONN_TIMEOUT);
timeout_list.insert(make_pair((int) conn->gethandle(), conn->get_last_error()));
}
} else if (conn->getstate() == CONNECTED) {
//10分钟没有任何响应就强制回收吧
if (now - conn->get_last_active_time() > 60 * 10) {
LOGW("handle :%d timeout", conn->gethandle());
conn->set_last_error(SOCKET_ERROR_TIMEOUT);
timeout_list.insert(make_pair((int) conn->gethandle(), conn->get_last_error()));
}
}
conn->release();
}
return;
}
示例2: connect
int NetWork::connect(const char *ip, unsigned short port, bool encrypt)
{
int handle = -1;
TcpConnection *conn = new TcpConnection(this);
// if(encrypt) conn->set_encrypt();
if (conn->connect(ip, port)) {
if (_online_user.addconn(conn)) {
_sock_event->add_event(conn, true, true);
handle = conn->gethandle();
}
} else {
LOGI("NetWork::connect connect fail : %s", strerror(errno));
//如果连接失败,将底层的网络错误码的负值返回回去;
handle = (conn->last_sys_errno() * (-1));
delete conn;
}
return handle;
}