class RedisBatchPush::Processor
Public Class Methods
new(block, max_size=nil, max_interval_sec=nil)
click to toggle source
# File lib/redis_batch_push/processor.rb, line 4 def initialize block, max_size=nil, max_interval_sec=nil @max_size = max_size @max_interval_sec = max_interval_sec validate! @block = block initialize_buffer end
Public Instance Methods
initialize_buffer()
click to toggle source
# File lib/redis_batch_push/processor.rb, line 13 def initialize_buffer @buffer = [] @buffer_start_time = Time.now end
must_send()
click to toggle source
# File lib/redis_batch_push/processor.rb, line 28 def must_send by_buffer_size = @max_size && @buffer.size >= @max_size by_interval_passed = @max_interval_sec && process_current_time - @buffer_start_time >= @max_interval_sec by_buffer_size || by_interval_passed end
process(item)
click to toggle source
# File lib/redis_batch_push/processor.rb, line 42 def process item @buffer << item tick end
process_current_time()
click to toggle source
# File lib/redis_batch_push/processor.rb, line 24 def process_current_time Time.now end
tick()
click to toggle source
# File lib/redis_batch_push/processor.rb, line 35 def tick if must_send && @buffer.size > 0 @block.call(@buffer) initialize_buffer end end
validate!()
click to toggle source
# File lib/redis_batch_push/processor.rb, line 18 def validate! if @max_size.nil? && @max_interval_sec.nil? raise "You must inform max_size or max_interval_sec" end end