代码拉取完成,页面将自动刷新
#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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。