Sha256: 09d3ceb485a9f5aeec9b3cebe3ed8520fbe848a62db7d3cb9c93a71360776c3e

Contents?: true

Size: 1.05 KB

Versions: 54

Compression:

Stored size: 1.05 KB

Contents

module SplitIoClient
  module Cache
    module Adapters
      module MemoryAdapters
        # Memory adapter implementation, which stores everything inside queue
        class QueueAdapter
          def initialize(max_size)
            @max_size = max_size
            @queue = Queue.new
            @current_size = Concurrent::AtomicFixnum.new(0)
          end

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

          # 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
            get_batch(@current_size.value)
          end

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

        end
      end
    end
  end
end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
splitclient-rb-6.3.0-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.3.0 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.3.0.pre.rc1-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.3.0.pre.rc1 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.2.0-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.2.0 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.2.0.pre.rc2-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.2.0.pre.rc2 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.2.0.pre.rc1-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.2.0.pre.rc1 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.1.0-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.1.0 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.1.0.pre.rc2-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.1.0.pre.rc2 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.1.0.pre.rc1-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.1.0.pre.rc1 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.0.1-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.0.1 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.0.1.pre.rc2-java lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
splitclient-rb-6.0.1.pre.rc2 lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb