gusucode.com > bigdata 工具箱 matlab源码程序 > bigdata/+matlab/+bigdata/+internal/+lazyeval/EncellificationProcessor.m
%EncellificationProcessor % Data Processor that encells each input. % % This will buffer all input until initialized state and then start % returning one cell per chunk for each input. % % See LazyTaskGraph for a general description of input and outputs. % Specifically, this will emit a single 1 x NumOutputs cell array, where % each cell contains the full output of the corresponding operation output. % % Copyright 2016 The MathWorks, Inc. classdef (Sealed) EncellificationProcessor < matlab.bigdata.internal.executor.DataProcessor % Properties overridden in the DataProcessor interface. properties (SetAccess = private) IsFinished = false; IsMoreInputRequired; end properties (SetAccess = immutable) % The number of outputs from the function handle. NumOutputs; % A map of input closure dependencies to input futures. InputFutureMap % The input buffer. InputBuffer; 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(numOutputs, inputFutureMap) factory = @createEncellficationProcessor; function dataProcessor = createEncellficationProcessor(~) import matlab.bigdata.internal.lazyeval.EncellificationProcessor; dataProcessor = EncellificationProcessor(numOutputs, inputFutureMap); end end end % Methods overridden in the DataProcessor interface. methods function data = process(obj, isLastOfDependencies, varargin) if obj.IsFinished data = cell(0, obj.NumOutputs); return; end isLastOfInputs = obj.InputFutureMap.mapScalars(isLastOfDependencies); functionInputs = obj.InputFutureMap.mapData(varargin); inputBuffer = obj.InputBuffer; inputBuffer.add(isLastOfInputs, functionInputs{:}); obj.IsFinished = all(isLastOfInputs); if all(inputBuffer.IsBufferInitialized) data = num2cell(inputBuffer.getAll()); else data = cell(0, obj.NumOutputs); end obj.IsMoreInputRequired = ~isLastOfDependencies; end end methods (Access = private) % Private constructor for factory method. function obj = EncellificationProcessor(numOutputs, inputFutureMap) import matlab.bigdata.internal.lazyeval.InputBuffer; obj.NumOutputs = numOutputs; obj.InputFutureMap = inputFutureMap; isInputSinglePartition = true(1, inputFutureMap.NumOperationInputs); obj.InputBuffer = InputBuffer(inputFutureMap.NumOperationInputs, isInputSinglePartition); obj.IsMoreInputRequired = true(1, inputFutureMap.NumOperationInputs); end end end