class ActiveHook::Server::Retry

Public Class Methods

new() click to toggle source
# File lib/activehook/server/retry.rb, line 4
def initialize
  @done = false
end

Public Instance Methods

shutdown() click to toggle source
# File lib/activehook/server/retry.rb, line 20
def shutdown
  @done = true
end
start() click to toggle source
# File lib/activehook/server/retry.rb, line 8
def start
  until @done
    ActiveHook.redis.with do |conn|
      conn.watch('ah:retry') do
        retries = retrieve_retries(conn)
        update_retries(conn, retries)
      end
    end
    sleep 2
  end
end

Private Instance Methods

retrieve_retries(conn) click to toggle source
# File lib/activehook/server/retry.rb, line 26
def retrieve_retries(conn)
  conn.zrangebyscore('ah:retry', 0, Time.now.to_i)
end
update_retries(conn, retries) click to toggle source
# File lib/activehook/server/retry.rb, line 30
def update_retries(conn, retries)
  if retries.any?
    conn.multi do |multi|
      multi.incrby('ah:total_retries', retries.count)
      multi.zrem('ah:retry', retries)
      multi.lpush('ah:queue', retries)
    end
  else
    conn.unwatch
  end
end