def construct_bundle_application(self, op, output_watermark, element): transform_id, main_input_tag, main_input_coder, outputs = op.input_info if output_watermark: proto_output_watermark = timestamp_pb2.Timestamp() proto_output_watermark.FromMicroseconds(output_watermark.micros) output_watermarks = {output: proto_output_watermark for output in outputs} else: output_watermarks = None return beam_fn_api_pb2.BundleApplication( transform_id=transform_id, input_id=main_input_tag, output_watermarks=output_watermarks, element=main_input_coder.get_impl().encode_nested(element))
def delayed_bundle_application(self, op, deferred_remainder): transform_id, main_input_tag, main_input_coder, outputs = op.input_info # TODO(SDF): For non-root nodes, need main_input_coder + residual_coder. element_and_restriction, watermark = deferred_remainder if watermark: proto_watermark = timestamp_pb2.Timestamp() proto_watermark.FromMicroseconds(watermark.micros) output_watermarks = {output: proto_watermark for output in outputs} else: output_watermarks = None return beam_fn_api_pb2.DelayedBundleApplication( application=beam_fn_api_pb2.BundleApplication( transform_id=transform_id, input_id=main_input_tag, output_watermarks=output_watermarks, element=main_input_coder.get_impl().encode_nested( element_and_restriction)))