Sha256: 8f8211ce7f48315207ef582fc8e58470e2be30a5e20b333e014b1c47498fe2ee
Contents?: true
Size: 881 Bytes
Versions: 18
Compression:
Stored size: 881 Bytes
Contents
require 'timeout' class Freddy class SyncResponseContainer def initialize(on_timeout) @mutex = Mutex.new @resource = ConditionVariable.new @on_timeout = on_timeout end def call(response, delivery) if response.nil? raise StandardError, 'unexpected nil value for response' end @response = response @delivery = delivery @mutex.synchronize { @resource.signal } end def wait_for_response(timeout) @mutex.synchronize { @response || @resource.wait(@mutex, timeout) } if !@response @on_timeout.call raise TimeoutError.new( error: 'RequestTimeout', message: 'Timed out waiting for response' ) elsif !@delivery || @delivery.type == 'error' raise InvalidRequestError.new(@response) else @response end end end end
Version data entries
18 entries across 18 versions & 2 rubygems