class Wire::MessageCallback

Public Class Methods

new(message_hash, message_id, callback, timeout_seconds) click to toggle source
# File lib/wire.rb, line 57
def initialize (message_hash, message_id, callback, timeout_seconds)
  @semaphore = Mutex.new
  @callback = callback
  @result = nil

  Thread.new do
    sleep(timeout_seconds)
    message_hash.delete(message_id)
    @semaphore.synchronize do
      if @result.nil?
        callback.timeout
      end
    end
  end
end

Public Instance Methods

set_result(result) click to toggle source
# File lib/wire.rb, line 73
def set_result (result)
  @semaphore.synchronize do
    @result = result
    @callback.complete(@result)
  end
end