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