class Tsuga::Service::Clusterer::WriteQueue

TODO: extract to a separate file

Constants

QUEUE_SIZE

Attributes

_adapter[R]
_queue[R]

Public Class Methods

new(adapter:nil) click to toggle source
# File lib/tsuga/service/clusterer.rb, line 218
def initialize(adapter:nil)
  @_adapter = adapter
  @_queue    = []
end

Public Instance Methods

flush() click to toggle source
# File lib/tsuga/service/clusterer.rb, line 229
def flush
  # separate inserts from updates
  inserts = _queue.map { |c| c.new_record? ? c : nil }.compact
  updates = _queue.map { |c| c.new_record? ? nil : c }.compact

  _adapter.mass_create(inserts) if inserts.any?
  _adapter.mass_update(updates) if updates.any?
  _queue.clear
end
push(value) click to toggle source
# File lib/tsuga/service/clusterer.rb, line 223
def push(value)
  @_queue.push(value)
  flush if @_queue.size > QUEUE_SIZE
  nil
end