Class: Smith::Messaging::Timeout

Inherits:
Object
  • Object
show all
Defined in:
lib/smith/messaging/sender.rb

Instance Method Summary collapse

Constructor Details

#initialize(timeout, opts = {}, &blk) ⇒ Timeout

Returns a new instance of Timeout.



207
208
209
210
# File 'lib/smith/messaging/sender.rb', line 207

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

Instance Method Details

#cancel_timeoutObject



228
229
230
# File 'lib/smith/messaging/sender.rb', line 228

def cancel_timeout
  @timeout.cancel if @timeout
end

#set_timeout(message_id) ⇒ Object



212
213
214
215
216
217
218
219
220
221
222
# File 'lib/smith/messaging/sender.rb', line 212

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?Boolean

Returns:

  • (Boolean)


224
225
226
# File 'lib/smith/messaging/sender.rb', line 224

def timeout?
  !@timeout_duration.nil?
end

#to_sObject



232
233
234
# File 'lib/smith/messaging/sender.rb', line 232

def to_s
  "<Smith::Timeout: #{@timeout_duration}>"
end