Class: Conduit::Callbacks

Inherits:
Object
  • Object
show all
Defined in:
lib/conduit/callbacks.rb

Overview

Manages callback registration and execution for Conduit::Stream.

Constant Summary collapse

FAILED =
Object.new.freeze

Instance Method Summary collapse

Constructor Details

#initializeCallbacks

Returns a new instance of Callbacks.



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

def initialize
  @callbacks = {}
end

Instance Method Details

#call_safely(callable, *args) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/conduit/callbacks.rb', line 27

def call_safely(callable, *args)
  callable.call(*args)
rescue StandardError => e
  raise unless @callbacks[:error]

  @callbacks[:error].call(e)
  FAILED
end

#emit(name, *args) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/conduit/callbacks.rb', line 16

def emit(name, *args)
  callback = @callbacks[name]
  return if callback.nil?

  callback.call(*args)
rescue StandardError => e
  raise unless name != :error && @callbacks[:error]

  @callbacks[:error].call(e)
end

#on(name, &block) ⇒ Object



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

def on(name, &block)
  @callbacks[name] = compose(@callbacks[name], block)
end