module Zstd
  # @todo Exprimental
  class StreamWriter
    def initialize(io, level: nil)
      @io = io
      @stream = Zstd::StreamingCompress.new(level)
    end

    def write(*data)
      @stream.write(*data)
      @io.write(@stream.flush)
    end

    def finish
      @io.write(@stream.finish)
    end

    def close
      @io.write(@stream.finish)
      @io.close
    end
  end
end
