class Smith::Messaging::Timeout

Public Class Methods

new(timeout, opts={}, &blk) click to toggle source
# File lib/smith/messaging/sender.rb, line 216
def initialize(timeout, opts={}, &blk)
  @timeout_proc = blk || proc { |message_id| raise MessageTimeoutError, "Message not received within the timeout period#{(message_id) ? ": #{message_id}" : ""}" }
  @timeout_duration = timeout
end

Public Instance Methods

cancel_timeout() click to toggle source
# File lib/smith/messaging/sender.rb, line 237
def cancel_timeout
  @timeout.cancel if @timeout
end
set_timeout(message_id) click to toggle source
# File lib/smith/messaging/sender.rb, line 221
def set_timeout(message_id)
  @message_id = message_id
  cancel_timeout
  if @timeout_duration
    @timeout = EventMachine::Timer.new(@timeout_duration) do
      @timeout_proc.call(message_id, @timeout_duration)
    end
  else
    raise ArgumentError, "on_timeout not set."
  end
end
timeout?() click to toggle source
# File lib/smith/messaging/sender.rb, line 233
def timeout?
  !@timeout_duration.nil?
end
to_s() click to toggle source
# File lib/smith/messaging/sender.rb, line 241
def to_s
  "<Smith::Timeout: #{@timeout_duration}>"
end