Пример #1
0
	OutputBuffer allocate_buffer(
		size_type min_data_size, size_type min_record_count)
	{
		if(!m_context){
			throw std::runtime_error(
				"This OutputWriter is not corresponding to any tasks");
		}
		auto &memory_manager = m_context->memory_manager();
		SerializedBuffer sb;
		if(m_has_keys){
			sb = SerializedBuffer::allocate_key_value_buffer(
				memory_manager,
				std::max(min_record_count, m_default_records_per_buffer),
				std::max(min_data_size,    m_default_buffer_size),
				m_current_locality.self_node_id());
		}else{
			sb = SerializedBuffer::allocate_value_only_buffer(
				memory_manager,
				std::max(min_record_count, m_default_records_per_buffer),
				std::max(min_data_size,    m_default_buffer_size),
				m_current_locality.self_node_id());
		}
		OutputBufferImpl buffer_impl;
		buffer_impl.bind_fragment(std::move(sb));
		return OutputBufferImpl::wrap_impl(std::move(buffer_impl));
	}