Class: Requeue::Queue

Inherits:
Object
  • Object
show all
Defined in:
lib/requeue.rb

Instance Method Summary collapse

Constructor Details

#initialize(redis: Redis.current, prefix: 'queue', unique: true) ⇒ Queue

Returns a new instance of Queue.



5
6
7
8
9
# File 'lib/requeue.rb', line 5

def initialize(redis: Redis.current, prefix: 'queue', unique:true)
  @prefix = prefix 
  @unique = unique 
  @redis  = redis
end

Instance Method Details

#as_jsonObject



67
68
69
# File 'lib/requeue.rb', line 67

def as_json
  {queue: list, owner: owner, length: length}.to_json
end

#clearObject



23
24
25
# File 'lib/requeue.rb', line 23

def clear
  @redis.del(name)
end

#dequeueObject



35
36
37
# File 'lib/requeue.rb', line 35

def dequeue
  @redis.lpop(name)
end

#enqueue(value) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/requeue.rb', line 27

def enqueue(value)
  if (@unique == false || !queued?(value))
    @redis.rpush(name, value) 
  else
    length
  end
end

#firstObject



55
56
57
# File 'lib/requeue.rb', line 55

def first
  @redis.lrange(name, 0, 1).first 
end

#lengthObject



19
20
21
# File 'lib/requeue.rb', line 19

def length
  @redis.llen(name)
end

#listObject



15
16
17
# File 'lib/requeue.rb', line 15

def list 
  @redis.lrange(name, 0, length)
end

#nameObject



11
12
13
# File 'lib/requeue.rb', line 11

def name
  "#{@prefix}:queue"
end

#owned?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/requeue.rb', line 59

def owned?
  length > 0
end

#ownerObject



51
52
53
# File 'lib/requeue.rb', line 51

def owner
  first
end

#position(value) ⇒ Object



43
44
45
# File 'lib/requeue.rb', line 43

def position(value)
  list.index(value)
end

#queued?(value) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/requeue.rb', line 39

def queued?(value)
  list.include?(value)
end

#remove(value) ⇒ Object



47
48
49
# File 'lib/requeue.rb', line 47

def remove(value)
  @redis.lrem(name, 0, value)
end

#steal(value) ⇒ Object



63
64
65
# File 'lib/requeue.rb', line 63

def steal(value)
  @redis.lpush(name, value)
end