class Requeue::Queue

Public Class Methods

new(redis: Redis.current, prefix: 'queue', unique:true) click to toggle source
# File lib/requeue.rb, line 5
def initialize(redis: Redis.current, prefix: 'queue', unique:true)
  @prefix = prefix 
  @unique = unique 
  @redis  = redis
end

Public Instance Methods

as_json() click to toggle source
# File lib/requeue.rb, line 67
def as_json
  {queue: list, owner: owner, length: length}.to_json
end
clear() click to toggle source
# File lib/requeue.rb, line 23
def clear
  @redis.del(name)
end
dequeue() click to toggle source
# File lib/requeue.rb, line 35
def dequeue
  @redis.lpop(name)
end
enqueue(value) click to toggle source
# File lib/requeue.rb, line 27
def enqueue(value)
  if (@unique == false || !queued?(value))
    @redis.rpush(name, value) 
  else
    length
  end
end
first() click to toggle source
# File lib/requeue.rb, line 55
def first
  @redis.lrange(name, 0, 1).first 
end
length() click to toggle source
# File lib/requeue.rb, line 19
def length
  @redis.llen(name)
end
list() click to toggle source
# File lib/requeue.rb, line 15
def list 
  @redis.lrange(name, 0, length)
end
name() click to toggle source
# File lib/requeue.rb, line 11
def name
  "#{@prefix}:queue"
end
owned?() click to toggle source
# File lib/requeue.rb, line 59
def owned?
  length > 0
end
owner() click to toggle source
# File lib/requeue.rb, line 51
def owner
  first
end
position(value) click to toggle source
# File lib/requeue.rb, line 43
def position(value)
  list.index(value)
end
queued?(value) click to toggle source
# File lib/requeue.rb, line 39
def queued?(value)
  list.include?(value)
end
remove(value) click to toggle source
# File lib/requeue.rb, line 47
def remove(value)
  @redis.lrem(name, 0, value)
end
steal(value) click to toggle source
# File lib/requeue.rb, line 63
def steal(value)
  @redis.lpush(name, value)
end