Class: Fluent::MultiEventStream
Overview
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)
Instance Method Summary
collapse
Methods inherited from EventStream
#==, #to_compressed_msgpack_stream, #to_msgpack_stream, #to_msgpack_stream_forced_integer
#compress, #decompress
Constructor Details
#initialize(time_array = [], record_array = []) ⇒ MultiEventStream
Returns a new instance of MultiEventStream.
162
163
164
165
|
# File 'lib/fluent/event.rb', line 162
def initialize(time_array = [], record_array = [])
@time_array = time_array
@record_array = record_array
end
|
Instance Method Details
#add(time, record) ⇒ Object
175
176
177
178
|
# File 'lib/fluent/event.rb', line 175
def add(time, record)
@time_array << time
@record_array << record
end
|
#dup ⇒ Object
167
168
169
|
# File 'lib/fluent/event.rb', line 167
def dup
MultiEventStream.new(@time_array.dup, @record_array.map(&:dup))
end
|
#each(unpacker: nil, &block) ⇒ Object
192
193
194
195
196
197
198
199
|
# 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? ⇒ Boolean
184
185
186
|
# File 'lib/fluent/event.rb', line 184
def empty?
@time_array.empty?
end
|
#repeatable? ⇒ Boolean
180
181
182
|
# File 'lib/fluent/event.rb', line 180
def repeatable?
true
end
|
#size ⇒ Object
171
172
173
|
# File 'lib/fluent/event.rb', line 171
def size
@time_array.size
end
|
#slice(index, num) ⇒ Object
188
189
190
|
# File 'lib/fluent/event.rb', line 188
def slice(index, num)
MultiEventStream.new(@time_array.slice(index, num), @record_array.slice(index, num))
end
|