Class: Bulker::Buffer

Inherits:
Object
  • Object
show all
Defined in:
lib/bulker/buffer.rb

Overview

Bulker::Buffer provides buffer pool and bulk execution functionality.

result = []
buffer = Bulker::Buffer.new(4) do |ary|
  result << ary # when buffer filled
end
(1..10).each do |i|
  buffer << i
end
buffer.flush
result #=> [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]

Instance Method Summary collapse

Constructor Details

#initialize(size, &block) ⇒ Buffer

size specify size of buffer.

block specify callback on filled buffer.



16
17
18
19
20
# File 'lib/bulker/buffer.rb', line 16

def initialize(size, &block)
  @size = size
  @buffer = []
  @on_buffered = block
end

Instance Method Details

#<<(obj) ⇒ Object

add obj into buffer



23
24
25
26
# File 'lib/bulker/buffer.rb', line 23

def << (obj)
  @buffer << obj
  flush if @buffer.size == @size
end

#flushObject

do bulk execution and clear buffer.



29
30
31
32
# File 'lib/bulker/buffer.rb', line 29

def flush
  @on_buffered.call(@buffer)
  @buffer = []
end