Module: Combi

Defined in:
lib/combi/helpers.rb,
lib/combi/reactor.rb,
lib/combi/service.rb,
lib/combi/version.rb,
lib/combi/buses/bus.rb,
lib/combi/buses/http.rb,
lib/combi/buses/queue.rb,
lib/combi/service_bus.rb,
lib/combi/queue_service.rb,
lib/combi/response_store.rb,
lib/combi/buses/in_process.rb,
lib/combi/buses/web_socket.rb,
lib/combi/buses/correlation.rb

Defined Under Namespace

Modules: Service Classes: Bus, Correlation, EventedWaiter, Http, InProcess, Queue, QueueService, Reactor, ResponseStore, ServiceBus, ServiceError, WebSocket

Constant Summary collapse

VERSION =
'0.0.11'

Class Method Summary collapse

Class Method Details

.wait_for(defer, options = {}, &block) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/combi/helpers.rb', line 8

def self.wait_for(defer, options = {}, &block)
  options[:timeout] ||= 2
  waiter_thread = Thread.current
  success_response, error_response = nil
  defer.callback { |response|
    success_response = response
    waiter_thread.wakeup
  }
  defer.errback { |response|
    STDERR << "waiting for result, received an error: #{response.inspect}\n"
    error_response = response
    waiter_thread.wakeup
  }
  Timeout::timeout(options[:timeout]) do
    Thread.stop
    puts "\t AFTER STOP"
    raise ServiceError.new(error_response) if error_response
    block.call success_response
  end
end