1 Star 0 Fork 0

胖纸_张毅/tlib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
tclient.cxx 1.56 KB
一键复制 编辑 原始数据 按行查看 历史
肉肉 提交于 2015-11-15 15:35 . no commit message
#include <stdlib.h>
#include <assert.h>
#include "tclient.h"
#include "tlogger.h"
#include "tsocket.h"
#include "tserver.h"
namespace tlib
{
TClient::TClient() :
fd(-1)
{
}
TClient::~TClient()
{
}
bool TClient::Read(char* buff, int len)
{
return m_inputBuffer.Read(buff, len);
}
//BS线程调用
void TClient::Send(char* buff, int len)
{
int ableLen = m_outputBuffer.GetLength();
if (0 == ableLen)
{
int realLen = TSocket::Send(fd, buff, len);
if (realLen > 0 && realLen < len)
{
m_outputBuffer.Write(&buff[len], len - realLen);
pSrv->m_eventLoop[IO_IDX(fd)].AddLoop(fd, Write);
}
}
}
//BS线程调用
void TClient::SendFd()
{
int len = m_outputBuffer.GetLength();
if (len > 0)
{
log_debug("sock[%d]开始发送缓存中的[%d]字节", fd, len);
char* buff = (char*) malloc(len);
assert(m_outputBuffer.Read(buff, len));
int realLen = TSocket::Send(fd, buff, len);
if (realLen > 0)
{
m_outputBuffer.Remove(realLen);
}
free(buff);
}
}
//IO线程调用
int TClient::ReadFd()
{
char buff[BLOCK_SIZE];
int realLen = TSocket::Recv(fd, buff, BLOCK_SIZE);
if (realLen > 0)
{
assert(m_inputBuffer.Write(buff, realLen));
}
return realLen;
}
bool TClient::Remove(int len)
{
return m_inputBuffer.Remove(len);
}
int TClient::GetFD()
{
return fd;
}
int TClient::GetLength()
{
return m_inputBuffer.GetLength();
}
int TClient::GetSepLength(char* sep, int len)
{
return m_inputBuffer.GetSepLength(sep, len);
}
} //namespace tlib
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/osczyup/tlib.git
git@gitee.com:osczyup/tlib.git
osczyup
tlib
tlib
master

搜索帮助