Class: Conduit::Callbacks
- Inherits:
-
Object
- Object
- Conduit::Callbacks
- 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
- #call_safely(callable, *args) ⇒ Object
- #emit(name, *args) ⇒ Object
-
#initialize ⇒ Callbacks
constructor
A new instance of Callbacks.
- #on(name, &block) ⇒ Object
Constructor Details
#initialize ⇒ Callbacks
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 |