server/DemoServer/MyBuffer.cpp
(完整代码) 1KB#include "stdafx.h"
#include "MyBuffer.h"
//分割符
const char MyBuffer::kCRLF[] = "\r\n";
MyBuffer::MyBuffer(size_t initialSize /*= kInitialSize*/)
: buffer_(kCheapPrepend + initialSize),
readerIndex_(kCheapPrepend),
writerIndex_(kCheapPrepend)
{
assert(readableBytes() == 0);
assert(writableBytes() == initialSize);
assert(prependableBytes() == kCheapPrepend);
}
MyBuffer::~MyBuffer()
{
}
void MyBuffer::makeSpace(size_t len)
{
if (writableBytes() + prependableBytes() < len + kCheapPrepend)
{
// move readable data,realloc memory
buffer_.resize(writerIndex_ + len);
}
else
{
// move readable data to the front, make space inside buffer
assert(kCheapPrepend < readerIndex_);
size_t readable = readableBytes();
//move data
//memcpy(begin() + kCheapPrepend, begin() + readerIndex_, readableBytes());
std::copy(begin() + readerIndex_,
begin() + writerIndex_,
buffer_.begin() + kCheapPrepend);
readerIndex_ = kCheapPrepend;
writerIndex_ = readerIndex_ + readable;
//set '\0' for test
memset(begin() + writerIndex_, '\0', readable);
assert(readable == readableBytes());
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
