本文整理汇总了C++中CBuffer::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ CBuffer::clear方法的具体用法?C++ CBuffer::clear怎么用?C++ CBuffer::clear使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBuffer
的用法示例。
在下文中一共展示了CBuffer::clear方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sendmessage
int CSocket::sendmessage(char *ip, int port, CBuffer *source)
{
if(sockid<0)return -1;
int size = 0;
sockaddr_in addr;
if(udp)
{
size = std::min(source->count, 8195);
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(ip);
size = sendto(sockid, source->data, size, 0, (sockaddr *)&addr, sizeof(sockaddr_in));
}
else
{
CBuffer sendbuff;
sendbuff.clear();
if(format == 0)
{
sendbuff.writeushort(source->count);
sendbuff.addBuffer(source);
size = send(sockid, sendbuff.data, sendbuff.count, 0);
}else if(format == 1)
{
sendbuff.addBuffer(source);
sendbuff.writechars(formatstr);
size = send(sockid, sendbuff.data, sendbuff.count, 0);
}else if(format == 2)
size = send(sockid, source->data, source->count, 0);
}
if(size == SOCKET_ERROR)return SOCKET_ERROR;
return size;
}
示例2: sendmessage
int CSocket::sendmessage( const char *ip, int port, CBuffer *source )
{
if (sockid<0) return -1;
int size = 0;
SOCKADDR_IN addr;
if(udp)
{
size = min(source->count, 8195);
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(ip);
size = sendto(sockid, source->data, size, 0, (SOCKADDR *)&addr, sizeof(SOCKADDR_IN));
}
else
{
CBuffer sendbuff;
sendbuff.clear();
if(format == 0)
{
sendbuff.writeushort(source->count);
sendbuff.addBuffer(source);
size = send(sockid, sendbuff.data, sendbuff.count, 0);
}
else if(format == 1)
{
sendbuff.addBuffer(source);
sendbuff.writechars(formatstr);
size = send(sockid, sendbuff.data, sendbuff.count, 0);
}
else if(format == 2)
size = send(sockid, source->data, source->count, 0);
}
return ((size = SOCKET_ERROR) ? -WSAGetLastError() : size);
}
示例3: Uncompress
bool ZLibUtils::Uncompress(CBuffer& pSrc)
{
QMutexLocker l(&ZLibUtils::m_oMutex);
for(ulong nSize = qMax(pSrc.size() * 6u, 1024u); ; nSize *= 2)
{
ZLibUtils::m_oCompressBuffer.resize(nSize);
ulong nCompress = ZLibUtils::m_oCompressBuffer.size();
int nRet = ::uncompress((Bytef*)ZLibUtils::m_oCompressBuffer.data(), &nCompress, (Bytef*)pSrc.data(), pSrc.size());
if(nRet == Z_OK)
{
ZLibUtils::m_oCompressBuffer.resize(nCompress);
pSrc.clear();
pSrc.append(ZLibUtils::m_oCompressBuffer);
break;
}
if(nRet != Z_BUF_ERROR)
{
return false;
}
}
return true;
}
示例4: Compress
bool ZLibUtils::Compress(CBuffer& pSrc, bool bIfSmaller)
{
QMutexLocker l(&ZLibUtils::m_oMutex);
if(bIfSmaller && pSrc.size() < 64)
{
return false;
}
ulong nCompress = qMax(ZLibUtils::m_oCompressBuffer.size(), pSrc.size() * 2);
ZLibUtils::m_oCompressBuffer.resize(nCompress);
int nRet = ::compress((Bytef*)ZLibUtils::m_oCompressBuffer.data(), &nCompress, (const Bytef*)pSrc.data(), pSrc.size());
if(nRet != Z_OK)
{
Q_ASSERT(nRet != Z_BUF_ERROR);
return false;
}
ZLibUtils::m_oCompressBuffer.resize(nCompress);
if(bIfSmaller && ZLibUtils::m_oCompressBuffer.size() > pSrc.size())
{
return false;
}
pSrc.clear();
pSrc.append(ZLibUtils::m_oCompressBuffer);
return true;
}
示例5: updateModel
void CLoaderTGeometry::updateModel(IModel * model, const std::map<int, TTextureId>& textures) const
{
if (model == nullptr)
return;
CBuffer * buffer = model->getBuffer();
if (buffer == nullptr)
return;
buffer->clear();
const std::size_t numFaces = m_textures.size();
std::vector<unsigned int>& indices = buffer->getIndices();
indices = m_indices;
std::vector<TVector3F>& vertices = buffer->getVertices();
vertices = m_vertices;
std::vector<TVector2F>& text_coords = buffer->getTextCoords();
text_coords = m_coords;
TBufferTextureVector& text = buffer->getTextures();
text.clear();
text.reserve(numFaces);
for (std::size_t i = 0; i < numFaces; ++i)
{
TBufferTexture t;
t.nbr = 3;
std::map<int, TTextureId>::const_iterator it = textures.find(m_textures[i]);
if (it == textures.end())
{
t.texture[0] = CTextureManager::DefaultTexture;
}
else
{
t.texture[0] = it->second;
}
text.push_back(t);
}
buffer->update();
}
示例6: sendmessage
int CSocket::sendmessage(char *ip, int port, CBuffer *source)
{
if(sockid<0)return -1;
int size = 0;
SOCKADDR_IN addr;
if(proc == UDP_NORMAL )
{
size = min(source->count, 8195);
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(ip);
size = sendto(sockid, source->data, size, 0, (SOCKADDR *)&addr, sizeof(SOCKADDR_IN));
}
else if ( proc == UDP_MULTICAST )
{
//...UDP MULTI-CAST RE-USES SAME ADDRESS
size = min(source->count, 8195);
//...For multi-cast : check if we are sending to a different port
if ( port!= 0 ){
memcpy (&addr, &udpAddr , sizeof(SOCKADDR_IN) );
addr.sin_port = htons(port);
}
size = sendto(sockid, source->data, size, 0, (SOCKADDR *)&addr , sizeof(SOCKADDR_IN));
}
else
{
CBuffer sendbuff;
sendbuff.clear();
if(format == 0)
{
sendbuff.writeushort(source->count);
sendbuff.addBuffer(source);
size = send(sockid, sendbuff.data, sendbuff.count, 0);
}else if(format == 1)
{
sendbuff.addBuffer(source);
sendbuff.writechars(formatstr);
size = send(sockid, sendbuff.data, sendbuff.count, 0);
}else if(format == 2)
size = send(sockid, source->data, source->count, 0);
}
if(size == EWOULDBLOCK)return -errno;
return size;
}
示例7: receiveBytes
int CSocket::receiveBytes(CBuffer& pDestination, int pCount, int pMode)
{
char buff[8192];
int size = 0;
fd_set set;
struct timeval tm;
pDestination.clear();
tm.tv_sec = 0;
tm.tv_usec = 0;
while(size < pCount)
{
if(!blocking)
{
FD_ZERO(&set);
FD_SET((unsigned int)sockId,&set);
select(sockId+1,&set,NULL,NULL,&tm);
if (!FD_ISSET(sockId,&set))
return size;
}
int len = pCount - size;
if(len > 8192)
len = 8192;
if(len < 0)
return size;
int a = recv(sockId, buff, len, 0);
if(a == 0)
return -1;
if(a < 0)
{
if(lastError() == EWOULDBLOCK || lastError() == EMSGSIZE)
break;
else return -lastError();
}
size+=a;
pDestination.writeBytes(buff, a);
if(udp)
break;
}
return size;
}
示例8: apply
/* Never was great formulating =P */
bool CWordFilter::apply(CPlayer *pPlayer, CBuffer &pBuffer, int pCheck)
{
bool logsave = false, rctell = false;
CBuffer start;
CStringList found;
int pos = 0, wc = 0;
for (int i = 0; i < WordList.count(); i++)
{
WordMatch *word = (WordMatch *)WordList[i];
if (!word->check[pCheck])
continue;
for (int j = 0; j < pBuffer.length(); j++)
{
for (int k = 0; k < word->match.length(); k++)
{
char c1 = pBuffer[j + k];
char c2 = word->match[k];
if (c2 != '?' && (isUpper(c2) && c2 != c1) || (isLower(c2) && toLower(c2) != toLower(c1)))
{
if (wc >= word->precision)
{
found.add(start);
for (int l = 0; l < (int)sizeof(word->action); l++)
{
if (!word->action[l])
continue;
switch (l)
{
case FILTERA_LOG:
if (logsave)
break;
logsave = true;
if (pPlayer != NULL)
errorOut("wordfilter.txt", CBuffer() << pPlayer->accountName << " has used rude words while chatting: " << start);
break;
case FILTERA_REPLACE:
pos = pBuffer.find(' ', j);
pos = (pos == -1 ? start.length() : pos-j+1);
for (int m = 0; m < pos; m++)
pBuffer.replace(j + m, '*');
break;
case FILTERA_TELLRC:
if (rctell)
break;
rctell = true;
if (pPlayer != NULL)
sendRCPacket(CPacket() << (char)DRCLOG << pPlayer->accountName << " has used rude words while chatting: " << start);
break;
case FILTERA_WARN:
pBuffer = (word->warnmessage.length() > 0 ? word->warnmessage : warnmessage);
break;
case FILTERA_JAIL: // kinda useless...?
break;
case FILTERA_BAN:
if (pPlayer != NULL)
{
CBuffer pLog = CBuffer() << "\n" << getTimeStr(0) << "\n" << pPlayer->accountName << " has used rude words while chatting: " << start;
pPlayer->setBan(pLog, true);
}
break;
}
}
}
start.clear();
wc = 0;
break;
}
start.writeChar(c1);
wc++;
}
}
}
return (found.count() > 0);
}