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

Inherits:
Object
  • Object
show all
Defined in:
lib/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/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



14
15
16
17
18
19
20
# File 'lib/cache/adapters/memory_adapters/queue_adapter.rb', line 14

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



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/cache/adapters/memory_adapters/queue_adapter.rb', line 23

def clear
  items = []

  loop do
    items << @queue.pop(true)

    @current_size.decrement
  end

rescue ThreadError
  items
end