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 积分,解读结果公开显示在下面。

还没有人解读过这个文件。