加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
echoserver.cxx 1.35 KB
一键复制 编辑 原始数据 按行查看 历史
肉肉 提交于 2016-03-12 23:00 . no commit message
#include "echoserver.h"
//std::map<int, int> g_statistics;
int g_fdCount = 0, g_msgCount = 0;
void EchoServer::OnMain()
{
int mis = 2;
for (;;)
{
tlib::Sleep(mis * 1000);
log_debug("==>当前连接数: %d 当前处理速度: %d/秒", g_fdCount, g_msgCount/mis);
g_msgCount = 0;
//for (std::map<int, int>::iterator it = g_statistics.begin(); it!=g_statistics.end(); it++)
//{
// log_debug("fd[[%d] recv times: %d", it->first, it->second);
//}
}
}
//BS线程调用
void EchoServer::OnConn(tlib::TClient* conn)
{
//g_statistics[conn->fd] = 0;
g_fdCount++;
log_debug("Socket[%d] OnConn..", conn->GetFD());
}
//BS线程调用
void EchoServer::OnRecv(tlib::TClient* conn, std::string msg)
{
//log_debug("Socket[%d] OnRecv..", conn->fd);
//g_statistics[conn->fd] = g_statistics[conn->fd]++;
g_msgCount++;
conn->Send((char*) msg.data(), msg.size());
}
//BS线程调用
void EchoServer::OnClose(tlib::TClient* conn)
{
g_fdCount--;
log_debug("Socket[%d] OnClose..", conn->GetFD());
}
//IO线程调用
bool EchoServer::PreRecv(tlib::TClient* conn, std::string &msg)
{
//log_debug("Socket[%d] PreRecv..", conn->GetFD());
int blen = conn->GetLength();
if (blen > 0)
{
char buff[BLOCK_SIZE] =
{ 0 };
if (conn->Read(buff, blen))
{
conn->Remove(blen);
msg = std::string(buff, blen);
return true;
}
}
return false;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化