Class: Fairway::Queue

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection, *queue_names) ⇒ Queue

Returns a new instance of Queue.



5
6
7
8
# File 'lib/fairway/queue.rb', line 5

def initialize(connection, *queue_names)
  @connection  = connection
  @queue_names = parse_queue_names(queue_names)
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



3
4
5
# File 'lib/fairway/queue.rb', line 3

def connection
  @connection
end

#queue_namesObject (readonly)

Returns the value of attribute queue_names.



3
4
5
# File 'lib/fairway/queue.rb', line 3

def queue_names
  @queue_names
end

Instance Method Details

#==(other) ⇒ Object



32
33
34
35
36
37
# File 'lib/fairway/queue.rb', line 32

def ==(other)
  other.respond_to?(:connection) &&
  other.respond_to?(:queue_names) &&
  connection == other.connection &&
  queue_names == other.queue_names
end

#active_facetsObject



10
11
12
13
14
15
16
17
18
# File 'lib/fairway/queue.rb', line 10

def active_facets
  facet_names = unique_queues.map do |queue|
    redis.smembers("#{queue}:active_facets")
  end.flatten.uniq
  
  facet_names.map do |name|
    Facet.new(self, name)
  end
end

#destroyObject



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

def destroy
  scripts.fairway_destroy(unique_queues)
end

#lengthObject



20
21
22
# File 'lib/fairway/queue.rb', line 20

def length
  redis.mget(unique_queues.map{|q| "#{q}:length" }).map(&:to_i).sum
end

#peekObject



24
25
26
# File 'lib/fairway/queue.rb', line 24

def peek
  scripts.fairway_peek(@queue_names.shuffle.uniq)
end

#pullObject



28
29
30
# File 'lib/fairway/queue.rb', line 28

def pull
  scripts.fairway_pull(@queue_names.shuffle.uniq)
end

#queue_keyObject



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

def queue_key
  queue
end

#redisObject



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

def redis
  @connection.redis
end

#scriptsObject



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

def scripts
  @connection.scripts
end

#unique_queuesObject



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

def unique_queues
  @queue_names.uniq
end