module AWS::Core::AsyncHandle

Mixin that provides a generic callback facility for asynchronous tasks that can either succeed or fail. @private

Public Instance Methods

on_complete(&blk) click to toggle source

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.

# File lib/aws/core/async_handle.rb, line 70
def on_complete(&blk)
  if !@_async_status.nil?
    blk.call(@_async_status)
  else
    (@_async_callbacks ||= []) << {
      :failure => lambda { blk.call(:failure) },
      :success => lambda { blk.call(:success) }
    }
  end
end
on_failure(&blk) click to toggle source

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.

# File lib/aws/core/async_handle.rb, line 53
def on_failure(&blk)
  if @_async_status == :failure
    blk.call
  else
    (@_async_callbacks ||= []) << { :failure => blk }
  end
end
on_success(&blk) click to toggle source

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.

# File lib/aws/core/async_handle.rb, line 39
def on_success(&blk)
  if @_async_status == :success
    blk.call
  else
    (@_async_callbacks ||= []) << { :success => blk }
  end
end
signal_failure() click to toggle source

Called to signal failure and fire off the failure and complete callbacks.

# File lib/aws/core/async_handle.rb, line 28
def signal_failure
  __send_signal(:failure)
end
signal_success() click to toggle source

Called to signal success and fire off the success and complete callbacks.

# File lib/aws/core/async_handle.rb, line 23
def signal_success
  __send_signal(:success)
end