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, WebSocket

Constant Summary collapse

VERSION =
'0.0.9'

Class Method Summary collapse

Class Method Details

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



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/combi/helpers.rb', line 5

def self.wait_for(defer, options = {}, &block)
  options[:timeout] ||= 2
  waiter_thread = Thread.current
  defer.callback { |response|
    block.call response
    waiter_thread.wakeup
  }
  defer.errback { |response|
    log "waiting for result, received an error"
    log response
    block.call error: true, message: 'service request error'
    waiter_thread.wakeup
  }
  Timeout::timeout(options[:timeout]) do
    Thread.stop
  end
end