module Leeroy::Helpers::Polling

Constants

POLL_CALLBACK
POLL_INTERVAL
POLL_TIMEOUT

Attributes

poll_callback[RW]
poll_interval[RW]
poll_response[RW]
poll_timeout[RW]

Public Class Methods

new(*args, &block) click to toggle source
Calls superclass method
# File lib/leeroy/helpers/polling.rb, line 52
def initialize(*args, &block)
  begin
    super

    @poll_callback = POLL_CALLBACK
    @poll_timeout = POLL_TIMEOUT
    @poll_interval = POLL_INTERVAL

  rescue StandardError => e
    raise e
  end
end

Public Instance Methods

poll(*args) click to toggle source
# File lib/leeroy/helpers/polling.rb, line 19
def poll(*args)
  begin
    logger.debug "beginning to poll"

    callback = self.poll_callback
    raise "callback must be a Proc" unless callback.kind_of?(Proc)

    timeout = self.poll_timeout
    interval = self.poll_interval

    logger.debug "callback: #{callback.inspect}"
    logger.debug "polling every #{interval} seconds for #{timeout} seconds"

    SmartPolling.poll(timeout: timeout, interval: interval) do
      poll_arg = args[0]
      logger.debug "poll_arg: #{poll_arg.inspect}"
      self.poll_response = callback.call(poll_arg)
    end

    response = self.poll_response
    logger.debug "response: #{response.inspect}"

    response

  rescue Interrupt => e
    logger.fatal "Keyboard interrupt"
    raise e

  rescue StandardError => e
    raise e
  end
end