gusucode.com > bigdata 工具箱 matlab源码程序 > bigdata/+matlab/+bigdata/+internal/+io/LocalWriteProcessor.m

    %LocalWriteProcessor
% Helper class that wraps a writer as a Data Processor.
%
% This will always write at least one chunk of input data.
%

%   Copyright 2015-2016 The MathWorks, Inc.

classdef LocalWriteProcessor < matlab.bigdata.internal.executor.DataProcessor
    % Properties overridden in the DataProcessor interface.
    properties (SetAccess = private)
        IsFinished = false;
        IsMoreInputRequired = true;
    end
    
    properties (SetAccess = immutable)
        % The underlying writer implementation.
        Writer;
    end
    
    properties (SetAccess = private)
        % A flag that is true if and only if data has been written.
        HasWrittenData = false;
    end
    
    methods
        function obj = LocalWriteProcessor(writer)
            obj.Writer = writer;
        end
    end
    
    % Methods overridden in the DataProcessor interface.
    methods
        function data = process(obj, isLastOfInput, data, partitionIndices)
            if obj.IsFinished
                return;
            end
            
            if nargin < 4
                partitionIndices = [];
            end
            
            % We ignore empty input unless we have written no chunks and
            % this is the last of the input. This is so the corresponding
            % LocalReadProcessor always has at least one chunk.
            if size(data, 1) > 0 || isLastOfInput && ~obj.HasWrittenData
                add(obj.Writer, partitionIndices, data);
                obj.HasWrittenData = true;
            end
            
            if isLastOfInput
                commit(obj.Writer);
                obj.IsFinished = true;
            end
        end
    end
end