Class: Distribot::TaskFinishedHandler

Inherits:
Object
  • Object
show all
Includes:
Handler
Defined in:
lib/distribot/task_finished_handler.rb

Instance Attribute Summary

Attributes included from Handler

#consumers, #queue_name

Instance Method Summary collapse

Methods included from Handler

handler_for, included, #initialize, queue_for

Instance Method Details

#announce_handler_has_finished(message) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/distribot/task_finished_handler.rb', line 15

def announce_handler_has_finished(message)
  Distribot.publish!(
    'distribot.flow.handler.finished',
    flow_id: message[:flow_id],
    phase: message[:phase],
    handler: message[:handler],
    task_queue: message[:task_queue]
  )
end

#callback(message) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/distribot/task_finished_handler.rb', line 7

def callback(message)
  task_counter_key = task_counter(message)
  current_value = Distribot.redis.get(task_counter_key) || return
  return unless current_value.to_i == 0
  Distribot.redis.del(task_counter_key)
  announce_handler_has_finished(message)
end

#task_counter(message) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/distribot/task_finished_handler.rb', line 25

def task_counter(message)
  # i.e. - distribot.flow.flowId.phaseName.handlerName.finished
  [
    'distribot',
    'flow',
    message[:flow_id],
    message[:phase],
    message[:handler].to_s,
    'finished'
  ].join('.')
end