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

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_failureObject

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_successObject

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