void SortMergeRunOperator::receiveFeedbackMessage( const WorkOrder::FeedbackMessage &msg) { CHECK(SortMergeRunOperator::kRunOutputMessage == msg.type()); // Deserialize completion message from merge run work order. serialization::SortMergeRunOutput run_output_proto; CHECK(run_output_proto.ParseFromArray(msg.payload(), msg.payload_size())); // Write the output run to merge tree. SortMergeRunOutput run_output(run_output_proto); merge_tree_.writeOutputRun(run_output.getMergeLevel(), run_output.getBlocksMutable()); }
void TextScanOperator::receiveFeedbackMessage(const WorkOrder::FeedbackMessage &msg) { switch (msg.type()) { case kSplitWorkOrderCompletionMessage: { num_done_split_work_orders_.fetch_add(1, std::memory_order_release); break; } case kNewTextBlobMessage: { serialization::TextBlob proto; CHECK(proto.ParseFromArray(msg.payload(), msg.payload_size())); text_blob_queue_.push(TextBlob(proto.blob_id(), proto.size())); break; } default: LOG(ERROR) << "Unknown feedback message type for TextScanOperator"; } }
void Foreman::processFeedbackMessage(const WorkOrder::FeedbackMessage &msg) { RelationalOperator *op = query_dag_->getNodePayloadMutable(msg.header().rel_op_index); op->receiveFeedbackMessage(msg); }