class SplitIoClient::Cache::Adapters::MemoryAdapters::QueueAdapter

Memory adapter implementation, which stores everything inside queue

def add_to_queue(data)

Adds data to queue in non-blocking mode
def add_to_queue(data)
  fail ThreadError if @current_size.value >= @max_size
  @queue.push(data)
  @current_size.increment
end

def clear(_ = nil)

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

def clear

def clear
  get_batch(@current_size.value)
end

def empty?

def empty?
  @queue.empty?
end

def get_batch(size)

def get_batch(size)
  items = []
  size.times do
    items << @queue.pop(true)
    @current_size.decrement
  end
  items
  rescue ThreadError
  items
end

def initialize(max_size)

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

def length

def length
  @current_size.value
end