Sha256: fe15350dc88f4c1359e623d1b8457a8d2c81fb914dceb263ed57c41732d8f045
Contents?: true
Size: 871 Bytes
Versions: 1
Compression:
Stored size: 871 Bytes
Contents
require 'thread' require 'timeout' class Freddy class SyncResponseContainer def initialize @mutex = Mutex.new end def call(response, delivery) @response = response @delivery = delivery @mutex.synchronize { @waiting.wakeup } end def wait_for_response(timeout) @mutex.synchronize do @waiting = Thread.current @mutex.sleep(timeout) end if @response.nil? raise Timeout::Error, 'execution expired' elsif @response[:error] == 'RequestTimeout' raise TimeoutError.new(@response) elsif !@delivery || @delivery.metadata.type == 'error' raise InvalidRequestError.new(@response) else @response end end private def to_proc Proc.new {|*args| self.call(*args)} end def filled? !@response.nil? end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
freddy-0.4.6 | lib/freddy/sync_response_container.rb |