Class: SplitIoClient::Cache::Adapters::MemoryAdapters::QueueAdapter
- Inherits:
-
Object
- Object
- SplitIoClient::Cache::Adapters::MemoryAdapters::QueueAdapter
- 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
-
#add_to_queue(data) ⇒ Object
Adds data to queue in non-blocking mode.
- #clear ⇒ Object
- #empty? ⇒ Boolean
- #get_batch(size) ⇒ Object
-
#initialize(max_size) ⇒ QueueAdapter
constructor
A new instance of QueueAdapter.
- #length ⇒ Object
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 |
#clear ⇒ Object
13 14 15 16 |
# File 'lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb', line 13 def clear(_ = nil) @queue = Queue.new @current_size.value = 0 end |
#empty? ⇒ Boolean
46 47 48 |
# File 'lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb', line 46 def empty? @queue.empty? end |
#get_batch(size) ⇒ Object
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb', line 31 def get_batch(size) items = [] size.times do items << @queue.pop(true) @current_size.decrement end items rescue ThreadError items end |
#length ⇒ Object
42 43 44 |
# File 'lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb', line 42 def length @current_size.value end |