class Shoryuken::Batch::Callback::Worker
Public Instance Methods
complete(bid, _, parent_bid)
click to toggle source
# File lib/shoryuken/batch/callback.rb, line 48 def complete(bid, _, parent_bid) if parent_bid _, complete, pending, children, failure = Shoryuken.redis do |r| r.multi do r.sadd("BID-#{parent_bid}-complete", bid) r.scard("BID-#{parent_bid}-complete") r.hincrby("BID-#{parent_bid}", 'pending', 0) r.hincrby("BID-#{parent_bid}", 'children', 0) r.hlen("BID-#{parent_bid}-failed") end end Batch.enqueue_callbacks(:complete, parent_bid) if complete == children && pending == failure end pending, children, success = Shoryuken.redis do |r| r.multi do r.hincrby("BID-#{bid}", 'pending', 0) r.hincrby("BID-#{bid}", 'children', 0) r.scard("BID-#{bid}-success") end end end
perform(_, body)
click to toggle source
# File lib/shoryuken/batch/callback.rb, line 9 def perform(_, body) jcb = JSON.parse(body) event = jcb['event'] bid = jcb['bid'] parent_bid = jcb['parent_bid'] clazz = jcb['job_class'] opts = jcb['arguments'] return unless %w[success complete].include?(event) clazz, method = clazz.split('#') if clazz.class == String && clazz.include?('#') method = "on_#{event}" if method.nil? status = Shoryuken::Batch::Status.new(bid) clazz.constantize.new.send(method, status, opts) send(event.to_sym, bid, status, parent_bid) end
success(bid, _, parent_bid)
click to toggle source
# File lib/shoryuken/batch/callback.rb, line 28 def success(bid, _, parent_bid) if parent_bid _, _, success, pending, children = Shoryuken.redis do |r| r.multi do r.sadd("BID-#{parent_bid}-success", bid) r.expire("BID-#{parent_bid}-success", Shoryuken::Batch::BID_EXPIRE_TTL) r.scard("BID-#{parent_bid}-success") r.hincrby("BID-#{parent_bid}", 'pending', 0) r.hincrby("BID-#{parent_bid}", 'children', 0) end end Batch.enqueue_callbacks(:success, parent_bid) if pending.to_i.zero? && children == success end Shoryuken.redis do |r| r.del "BID-#{bid}", "BID-#{bid}-success", "BID-#{bid}-complete", "BID-#{bid}-jids", "BID-#{bid}-failed" end end