当前位置: 首页>>代码示例>>C++>>正文


C++ StringPiece::remove_suffix方法代码示例

本文整理汇总了C++中StringPiece::remove_suffix方法的典型用法代码示例。如果您正苦于以下问题:C++ StringPiece::remove_suffix方法的具体用法?C++ StringPiece::remove_suffix怎么用?C++ StringPiece::remove_suffix使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在StringPiece的用法示例。


在下文中一共展示了StringPiece::remove_suffix方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: processRequest

bool Session::processRequest(StringPiece request)
{
	assert(command_.empty());
	assert(!noreply_);
	assert(policy_ == Item::kInvalid);
	assert(!currItem_);
	assert(bytesToDiscard_ == 0);
	++requestsProcessed_;

	// check 'noreply' at end of request line
	if (request.size() >= 8)
	{
		StringPiece end(request.end() - 8, 8);
		if (end == " noreply")
		{
			noreply_ = true;
			request.remove_suffix(8);
		}
	}

	SpaceSeparator sep;
	Tokenizer tok(request.begin(), request.end(), sep);
	Tokenizer::iterator beg = tok.begin();
	if (beg == tok.end())
	{
		reply("ERROR\r\n");
		return true;
	}
	(*beg).CopyToString(&command_);
	++beg;
	if (command_ == "set" || command_ == "add" || command_ == "replace"
		|| command_ == "append" || command_ == "prepend" || command_ == "cas")
	{
		// this normally returns false
		return doUpdate(beg, tok.end());
	}
	else if (command_ == "get" || command_ == "gets")
	{
		bool cas = command_ == "gets";

		// FIXME: send multiple chunks with write complete callback.
		while (beg != tok.end())
		{
			StringPiece key = *beg;
			bool good = key.size() <= kLongestKeySize;
			if (!good)
			{
				reply("CLIENT_ERROR bad command line format\r\n");
				return true;
			}

			needle_->resetKey(key);
			ConstItemPtr item = owner_->getItem(needle_);
			++beg;
			if (item)
			{
				item->output(&outputBuf_, cas);
			}
		}
		outputBuf_.append("END\r\n");

		if (conn_->outputBuffer()->writableBytes() > 65536 + outputBuf_.readableBytes())
		{
			LOG_DEBUG << "shrink output buffer from " << conn_->outputBuffer()->internalCapacity();
			conn_->outputBuffer()->shrink(65536 + outputBuf_.readableBytes());
		}

		conn_->send(&outputBuf_);
	}
	else if (command_ == "delete")
	{
		doDelete(beg, tok.end());
	}
	else if (command_ == "version")
	{
#ifdef HAVE_TCMALLOC
		reply("VERSION 0.01 muduo with tcmalloc\r\n");
#else
		reply("VERSION 0.01 muduo\r\n");
#endif
	}
#ifdef HAVE_TCMALLOC
	else if (command_ == "memstat")
	{
		char buf[1024 * 64];
		MallocExtension::instance()->GetStats(buf, sizeof buf);
		reply(buf);
	}
#endif
	else if (command_ == "quit")
	{
		conn_->shutdown();
	}
	else if (command_ == "shutdown")
	{
		// "ERROR: shutdown not enabled"
		conn_->shutdown();
		owner_->stop();
	}
	else
//.........这里部分代码省略.........
开发者ID:1suming,项目名称:msmuduo,代码行数:101,代码来源:Session.cpp


注:本文中的StringPiece::remove_suffix方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。