class Fluent::MultiEventStream

EventStream from entries: numbers of pairs of time and record.

This class can handle many events more efficiently than ArrayEventStream because this class generate less objects than ArrayEventStream.

Use this class as below, in loop of data-enumeration:

1. initialize blank stream:
   streams[tag] ||= MultiEventStream.new
2. add events
   stream[tag].add(time, record)

Public Class Methods

new(time_array = [], record_array = []) click to toggle source
# File lib/fluent/event.rb, line 162
def initialize(time_array = [], record_array = [])
  @time_array = time_array
  @record_array = record_array
end

Public Instance Methods

add(time, record) click to toggle source
# File lib/fluent/event.rb, line 175
def add(time, record)
  @time_array << time
  @record_array << record
end
dup() click to toggle source
# File lib/fluent/event.rb, line 167
def dup
  MultiEventStream.new(@time_array.dup, @record_array.map(&:dup))
end
each(unpacker: nil, &block) click to toggle source
# File lib/fluent/event.rb, line 192
def each(unpacker: nil, &block)
  time_array = @time_array
  record_array = @record_array
  for i in 0..time_array.length-1
    block.call(time_array[i], record_array[i])
  end
  nil
end
empty?() click to toggle source
# File lib/fluent/event.rb, line 184
def empty?
  @time_array.empty?
end
repeatable?() click to toggle source
# File lib/fluent/event.rb, line 180
def repeatable?
  true
end
size() click to toggle source
# File lib/fluent/event.rb, line 171
def size
  @time_array.size
end
slice(index, num) click to toggle source
# File lib/fluent/event.rb, line 188
def slice(index, num)
  MultiEventStream.new(@time_array.slice(index, num), @record_array.slice(index, num))
end