Class: SplitIoClient::Cache::Adapters::MemoryAdapters::QueueAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb

Overview

Memory adapter implementation, which stores everything inside queue

Instance Method Summary collapse

Constructor Details

#initialize(max_size) ⇒ QueueAdapter

Returns a new instance of QueueAdapter.



7
8
9
10
11
# File 'lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb', line 7

def initialize(max_size)
  @max_size = max_size
  @queue = Queue.new
  @current_size = Concurrent::AtomicFixnum.new(0)
end

Instance Method Details

#add_to_queue(data) ⇒ Object

Adds data to queue in non-blocking mode



19
20
21
22
23
24
25
# File 'lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb', line 19

def add_to_queue(data)
  fail ThreadError if @current_size.value >= @max_size

  @queue.push(data)

  @current_size.increment
end

#clearObject

Get all items from the queue



28
29
30
31
# File 'lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb', line 28

def clear(_ = nil)
  @queue = Queue.new
  @current_size.value = 0
end