コード例 #1
0
ファイル: range_index.cpp プロジェクト: AntonOrnatskyi/metis
bool Range::getItems(const TRangeID rangeID, BString &data)
{
	AutoMutex autoSync(&_sync);
	RangeItemsHeader &header = *(RangeItemsHeader*)data.reserveBuffer(sizeof(RangeItemsHeader));
	header.rangeID = rangeID;
	header.count = _items.size();
	RangeItemEntry itemEntry;
	for (auto item = _items.begin(); item != _items.end(); item++) {
		itemEntry.itemKey = item->first;
		itemEntry.size = item->second.size;
		itemEntry.timeTag = item->second.timeTag;
		data.add((char*)&itemEntry, sizeof(itemEntry));
	}
	return true;
}
コード例 #2
0
ファイル: buffer.cpp プロジェクト: FinalLevel/libs
void Buffer::get(BString &value)
{
	TSize size {0};
	if ((_readPos + sizeof(size)) > _writePos) {
		throw Error("Read out of range");
	}
	
	memcpy(&size, _readPos, sizeof(size));
	_readPos += sizeof(size);
	if ((_readPos + size) > _writePos) {
		throw Error("Read out of range");
	}
	
	value.clear();
	value.add((char*)_readPos, size);
	_readPos += size;
}