Class: Fairway::Facet

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

Defined Under Namespace

Classes: InvalidPriorityError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue, facet_name) ⇒ Facet

Returns a new instance of Facet.



7
8
9
10
# File 'lib/fairway/facet.rb', line 7

def initialize(queue, facet_name)
  @queue = queue
  @name  = facet_name
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#queueObject (readonly)

Returns the value of attribute queue.



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

def queue
  @queue
end

Instance Method Details

#==(other) ⇒ Object



46
47
48
49
50
51
# File 'lib/fairway/facet.rb', line 46

def ==(other)
  other.respond_to?(:queue) &&
  other.respond_to?(:name) &&
  queue == other.queue &&
  name == other.name
end

#facet_key(queue) ⇒ Object



38
39
40
# File 'lib/fairway/facet.rb', line 38

def facet_key(queue)
  "#{queue}:#{name}"
end

#lengthObject



12
13
14
15
16
17
18
19
20
# File 'lib/fairway/facet.rb', line 12

def length
  redis.pools.map do |pool|
    pool.with do |conn|
      each_queue do |queue|
        conn.llen(facet_key(queue))
      end.sum
    end
  end.sum
end

#priorityObject



22
23
24
25
26
27
28
# File 'lib/fairway/facet.rb', line 22

def priority
  redis.with do |conn|
    each_queue do |queue|
      (conn.hget(priority_key(queue), name) || 1).to_i
    end
  end
end

#priority=(priority) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/fairway/facet.rb', line 30

def priority=(priority)
  validate_priority!(priority)

  each_queue do |queue|
    scripts.fairway_priority(queue, name, priority)
  end
end

#priority_key(queue) ⇒ Object



42
43
44
# File 'lib/fairway/facet.rb', line 42

def priority_key(queue)
  "#{queue}:priorities"
end