加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
connection_map.cpp 1.49 KB
一键复制 编辑 原始数据 按行查看 历史
gaoqingfeng 提交于 2023-02-01 11:15 . code style update
#include "connection_map.h"
#include "ikcp.h"
namespace KCP {
CConnectionMap::CConnectionMap() {
m_connections.clear();
}
CConnectionMap::~CConnectionMap() {
Stop();
}
CConnection* CConnectionMap::FindConnection(uint32 conv) {
auto iter = m_connections.find(conv);
if (iter == m_connections.end()) {
return nullptr;
} else {
return iter->second;
}
}
void CConnectionMap::Update(int64 clockTime) {
CConnection* conn = nullptr;
for (auto iter = m_connections.begin(); iter != m_connections.end();) {
if ((conn = iter->second)) {
// update data.
conn->update(clockTime);
// time out check.
if (conn->isTimeout()) {
CConnection::release(conn);
m_connections.erase(iter++);
} else {
iter++;
}
} else {
ADebug("find invalid connection");
}
}
}
CConnection* CConnectionMap::Create(CConnectionMgr &manager,
uint32 conv, const udp::endpoint& endpoint
) {
CConnection *conn = CConnection::create(manager, conv, endpoint);
m_connections[conv] = conn;
return conn;
}
bool CConnectionMap::CheckConnect(const udp::endpoint &ep) const {
for (const auto &e : m_connections) {
if (e.second->get_endpoint() == ep) {
return true;
}
}
return false;
}
uint32 CConnectionMap::GetNextConv() {
static uint32 static_cur_conv = 0;
static_cur_conv++;
return static_cur_conv;
}
void CConnectionMap::Stop() {
for (auto &e : m_connections) {
CConnection::release(e.second);
}
m_connections.clear();
}
void CConnectionMap::Remove(uint32 conv) {
m_connections.erase(conv);
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化