Sha256: bc56c5e20589d3cf7e5dc73485fec10015710f5837f0ad5cd9130f24602154e0

Contents?: true

Size: 471 Bytes

Versions: 6

Compression:

Stored size: 471 Bytes

Contents

require 'adrian/queue'

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

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

    def push(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

6 entries across 6 versions & 1 rubygems

Version Path
adrian-1.2.0 lib/adrian/array_queue.rb
adrian-1.1.2 lib/adrian/array_queue.rb
adrian-1.1.1 lib/adrian/array_queue.rb
adrian-1.1.0 lib/adrian/array_queue.rb
adrian-1.0.1 lib/adrian/array_queue.rb
adrian-1.0.0 lib/adrian/array_queue.rb