Module: Combi

Defined in:
lib/combi.rb,
lib/combi/helpers.rb,
lib/combi/version.rb,
lib/combi/buses/bus.rb,
lib/combi/buses/http.rb,
lib/combi/buses/queue.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, Http, InProcess, Queue, QueueService, Reactor, ResponseStore, ServiceBus, ServiceError, WebSocket

Constant Summary collapse

VERSION =
'0.4.0'

Class Method Summary collapse

Class Method Details

.loggerObject



4
5
6
# File 'lib/combi.rb', line 4

def self.logger
  @logger ||= create_logger
end

.logger_classObject



8
9
10
# File 'lib/combi.rb', line 8

def self.logger_class
  @logger_class ||= Logger
end

.logger_class=(custom_class) ⇒ Object



12
13
14
# File 'lib/combi.rb', line 12

def self.logger_class=(custom_class)
  @logger_class = custom_class
end

.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
# 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
    raise ServiceError.new(error_response) if error_response
    block.call success_response
  end
end