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.



192
193
194
195
# File 'lib/smith/messaging/sender.rb', line 192

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



213
214
215
# File 'lib/smith/messaging/sender.rb', line 213

def cancel_timeout
  @timeout.cancel if @timeout
end

#set_timeout(message_id) ⇒ Object



197
198
199
200
201
202
203
204
205
206
207
# File 'lib/smith/messaging/sender.rb', line 197

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)


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

def timeout?
  !@timeout_duration.nil?
end

#to_sObject



217
218
219
# File 'lib/smith/messaging/sender.rb', line 217

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