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)); }