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


C++ DynArray::Append方法代码示例

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


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

示例1: Set

bool Endpoint::Set(const char* ip_port, bool resolv)
{
	const char*		p;
	int				port;
	bool			ret;
	DynArray<32>	ipbuf;

	p = ip_port;
	
	while (*p != '\0' && *p != ':')
		p++;
	
	if (*p == '\0')
	{
		Log_Trace("No ':' in host specification");
		return false;
	}

	ipbuf.Append(ip_port, p - ip_port);
	ipbuf.Append("", 1);
	p++;
	
	port = -1;
	port = atoi(p);
	if (port < 1 || port > 65535)
	{
		Log_Trace("atoi() failed to produce a sensible value");
		return false;
	}

	ret = Set(ipbuf.buffer, port, resolv);
	
	return ret;
}
开发者ID:Kaperstone,项目名称:keyspace,代码行数:34,代码来源:Endpoint.cpp

示例2: ListKeyValues

int Client::ListKeyValues(const ByteString &prefix,
const ByteString &startKey, uint64_t count,
bool next, bool forward, bool dirty, bool values)
{
	Command*		cmd;
	ByteString		args[5];
	DynArray<32>	countString;
	DynArray<10>	nextString;
	DynArray<10>	backString;
	ByteString		sk;

	VALIDATE_CLIENT();
	VALIDATE_NOT_BATCHED();
	VALIDATE_KEY_LEN(prefix);

	countString.Writef("%U", count);
	if (next)
		nextString.Append("1", 1);
	else
		nextString.Append("0", 1);

	if (forward)
		backString.Append("f", 1);
	else
		backString.Append("b", 1);

	if (prefix.length > 0 && startKey.length >= prefix.length)
	{
		if (memcmp(prefix.buffer, startKey.buffer,
			MIN(prefix.length, startKey.length)) == 0)
		{
			sk.buffer = startKey.buffer + prefix.length;
			sk.length = startKey.length - prefix.length;
			sk.size = startKey.size - prefix.length;
		}
	}
	else
		sk = startKey; // TODO: this seems inconsistent

	args[0] = prefix;
	args[1] = sk;
	args[2] = countString;
	args[3] = nextString;
	args[4] = backString;
	
	if (dirty)
	{
		VALIDATE_DIRTY();
		
		if (values)
			cmd = CreateCommand(KEYSPACECLIENT_DIRTY_LISTP, SIZE(args), args);
		else
			cmd = CreateCommand(KEYSPACECLIENT_DIRTY_LIST, SIZE(args), args);

		dirtyCommands.Append(cmd);
	}
	else
	{
		VALIDATE_SAFE();
		
		if (values)
			cmd = CreateCommand(KEYSPACECLIENT_LISTP, SIZE(args), args);
		else
			cmd = CreateCommand(KEYSPACECLIENT_LIST, SIZE(args), args);
		
		safeCommands.Append(cmd);
	}
	
	result->Close();
	result->AppendCommand(cmd);
	
	EventLoop();
	return result->CommandStatus();	

}
开发者ID:Kaperstone,项目名称:keyspace,代码行数:75,代码来源:KeyspaceClient.cpp

示例3: HandleRequest

bool HttpFileHandler::HandleRequest(HttpConn* conn, const HttpRequest& request)
{
	DynArray<128>	path;
	DynArray<128>	tmp;
	DynArray<128>	ha;
	char			buf[128 * 1024];
	FILE*			fp;
	size_t			nread;
	size_t			fsize;
	const char*		mimeType;
	
	if (strncmp(request.line.uri, prefix, strlen(prefix)))
		return false;
	
	path.Writef("%s%s", documentRoot, request.line.uri);
	path.Append("", 1);
	
	mimeType = MimeTypeFromExtension(strrchr(path.buffer, '.'));
	
	fp = fopen(path.buffer, "rb");
	if (!fp)
		return false;
	
	fseek(fp, 0L, SEEK_END);
	fsize = ftell(fp);
	fseek(fp, 0L, SEEK_SET);
	
	HttpHeaderAppend(ha, 
		HTTP_HEADER_CONTENT_TYPE, sizeof(HTTP_HEADER_CONTENT_TYPE) - 1,
		mimeType, strlen(mimeType));
	
	tmp.Writef("%u", fsize);
	HttpHeaderAppend(ha,
		HTTP_HEADER_CONTENT_LENGTH, sizeof(HTTP_HEADER_CONTENT_LENGTH) - 1,
		tmp.buffer, tmp.length);

	// zero-terminate
	ha.Append("", 1);
	
	conn->ResponseHeader(HTTP_STATUS_CODE_OK, ha.buffer);
	
	while (true)
	{
		nread = fread(buf, 1, sizeof(buf), fp);
		if (feof(fp))
		{
			fclose(fp);
			conn->Write(buf, nread, true);
			break;
		}
		if (ferror(fp))
		{
			fclose(fp);
			break;
		}
		
		conn->Write(buf, nread);
	}

	conn->Flush();
	return true;
}
开发者ID:Kaperstone,项目名称:keyspace,代码行数:62,代码来源:HttpFileHandler.cpp

示例4: Count

int Client::Count(uint64_t &res, const ByteString &prefix,
const ByteString &startKey,
uint64_t count = 0, bool next = false, bool forward = false, bool dirty = false)
{
	Command*		cmd;
	ByteString		args[5];
	DynArray<32>	countString;
	DynArray<10>	nextString;
	DynArray<10>	backString;
	ByteString		sk;
	int				status;
	unsigned		nread;
	ByteString		value;

	VALIDATE_CLIENT();
	VALIDATE_NOT_BATCHED();
	VALIDATE_KEY_LEN(prefix);
	
	countString.Writef("%U", count);
	if (next)
		nextString.Append("1", 1);
	else
		nextString.Append("0", 1);

	if (forward)
		backString.Append("f", 1);
	else
		backString.Append("b", 1);

	if (prefix.length > 0 && startKey.length >= prefix.length)
	{
		if (memcmp(prefix.buffer, startKey.buffer,
			MIN(prefix.length, startKey.length)) == 0)
		{
			sk.buffer = startKey.buffer + prefix.length;
			sk.length = startKey.length - prefix.length;
			sk.size = startKey.size - prefix.length;
		}
	}
	else
		sk = startKey; // TODO: this seems inconsistent

	args[0] = prefix;
	args[1] = sk;
	args[2] = countString;
	args[3] = nextString;
	args[4] = backString;
	
	if (dirty)
	{
		VALIDATE_DIRTY();
		cmd = CreateCommand(KEYSPACECLIENT_DIRTY_COUNT,	SIZE(args), args);
		dirtyCommands.Append(cmd);
	}
	else
	{
		VALIDATE_SAFE();
		cmd = CreateCommand(KEYSPACECLIENT_COUNT, SIZE(args), args);
		safeCommands.Append(cmd);
	}
	
	result->Close();
	result->AppendCommand(cmd);
	
	EventLoop();
	status = result->CommandStatus();
	if (status != KEYSPACE_SUCCESS)
		return status;
	
	// TODO check conversion
	status = result->Value(value);
	if (status == KEYSPACE_SUCCESS)
		res = strntoint64(value.buffer, value.length, &nread);

	return status;
}
开发者ID:Kaperstone,项目名称:keyspace,代码行数:76,代码来源:KeyspaceClient.cpp


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