Module: AWS::Core::AsyncHandle
- Included in:
- Response
- Defined in:
- lib/aws/core/async_handle.rb
Overview
Mixin that provides a generic callback facility for asynchronous tasks that can either succeed or fail.
Instance Method Summary collapse
-
#on_complete(&block) ⇒ Object
Registers a callback to be called when the task is complete, regardless of its status.
-
#on_failure(&block) ⇒ Object
Registers a callback to be called when the task fails.
-
#on_success(&block) ⇒ Object
Registers a callback to be called on successful completion of the task.
-
#signal_failure ⇒ Object
Called to signal failure and fire off the failure and complete callbacks.
-
#signal_success ⇒ Object
Called to signal success and fire off the success and complete callbacks.
Instance Method Details
#on_complete(&block) ⇒ Object
Registers a callback to be called when the task is complete, regardless of its status. Yields the status to the block.
handle.on_complete do |status|
puts "It #{status == :success ? 'did' : 'did not'} work!"
end
If this is called when the task has already completed, it will call the callback immediately.
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/aws/core/async_handle.rb', line 69 def on_complete(&block) if !@_async_status.nil? block.call(@_async_status) else (@_async_callbacks ||= []) << { :failure => lambda { block.call(:failure) }, :success => lambda { block.call(:success) } } end end |
#on_failure(&block) ⇒ Object
Registers a callback to be called when the task fails.
handle.on_failure { puts "It didn't work!" }
If this is called when the task has already failed, it will call the callback immediately.
52 53 54 55 56 57 58 |
# File 'lib/aws/core/async_handle.rb', line 52 def on_failure(&block) if @_async_status == :failure block.call else (@_async_callbacks ||= []) << { :failure => block } end end |
#on_success(&block) ⇒ Object
Registers a callback to be called on successful completion of the task.
handle.on_success { puts "It worked!" }
If this is called when the task has already completed successfully, it will call the callback immediately.
38 39 40 41 42 43 44 |
# File 'lib/aws/core/async_handle.rb', line 38 def on_success(&block) if @_async_status == :success block.call else (@_async_callbacks ||= []) << { :success => block } end end |
#signal_failure ⇒ Object
Called to signal failure and fire off the failure and complete callbacks.
27 28 29 |
# File 'lib/aws/core/async_handle.rb', line 27 def signal_failure __send_signal(:failure) end |
#signal_success ⇒ Object
Called to signal success and fire off the success and complete callbacks.
22 23 24 |
# File 'lib/aws/core/async_handle.rb', line 22 def signal_success __send_signal(:success) end |