Sha256: 72b7d6065559b22393a91a10a550c2a25fc3bf75d7d9986db60593f2ba96d908

Contents?: true

Size: 524 Bytes

Versions: 3

Compression:

Stored size: 524 Bytes

Contents

require 'adrian/queue'

module Adrian
  class ArrayQueue < Adrian::Queue
    def initialize(array = [], options = {})
      super(options)
      @array = array.map { |item| wrap_item(item) }
      @mutex = Mutex.new
    end

    def pop_item
      @mutex.synchronize { @array.shift }
    end

    def push_item(item)
      item = wrap_item(item)
      @mutex.synchronize { @array << item }
      self
    end

    protected

    def wrap_item(item)
      item.is_a?(QueueItem) ? item : QueueItem.new(item)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
adrian-1.3.3 lib/adrian/array_queue.rb
adrian-1.3.2 lib/adrian/array_queue.rb
adrian-1.3.1 lib/adrian/array_queue.rb