www.gusucode.com > bigdata 工具箱 matlab源码程序 > bigdata/+matlab/+bigdata/+internal/+executor/BroadcastProcessor.m
%BroadcastProcessor % Data Processor that collects all data and when done, calls a broadcast % function. % % Copyright 2016 The MathWorks, Inc. classdef (Sealed) BroadcastProcessor < matlab.bigdata.internal.executor.DataProcessor % Properties overridden in the DataProcessor interface. properties (SetAccess = private) IsFinished = false; IsMoreInputRequired = true; end properties (SetAccess = immutable) % The function to call on completion. BroadcastFunctionHandle; % The partition that this processor is executing over. Partition; end properties (SetAccess = private) % A buffer to collect all of the input before calling broadcast. Buffer = []; end methods (Static) % Create a data processor factory that can be used by the execution % environment to construct instances of this class. function factory = createFactory(functionHandle) factory = @createBroadcastProcessor; function dataProcessor = createBroadcastProcessor(partition) import matlab.bigdata.internal.executor.BroadcastProcessor; dataProcessor = BroadcastProcessor(functionHandle, partition); end end end % Methods overridden in the DataProcessor interface. methods function data = process(obj, isLastOfInput, data) if obj.IsFinished return; end if isempty(obj.Buffer) obj.Buffer = data; else obj.Buffer = [obj.Buffer; data]; end if isLastOfInput feval(obj.BroadcastFunctionHandle, obj.Partition, obj.Buffer); obj.Buffer = []; obj.IsFinished = true; end end end methods (Access = private) % Private constructor for factory method. function obj = BroadcastProcessor(broadcastFunctionHandle, partition) obj.BroadcastFunctionHandle = broadcastFunctionHandle; obj.Partition = partition; end end end