@private
# File lib/aws/core/http/handler.rb, line 23 def initialize(base, &block) @base = base if base.respond_to?(:handle) unless block.arity == 2 raise ArgumentError, 'passed block must accept 2 arguments' end MetaUtils.extend_method(self, :handle, &block) elsif base.respond_to?(:handle_async) unless block.arity == 3 raise ArgumentError, 'passed block must accept 3 arguments' end MetaUtils.extend_method(self, :handle_async) do |req, resp, handle| @base.handle_async(req, resp, handle) end MetaUtils.extend(self) do define_method(:handle) do |req, resp| raise "attempted to call #handle on an async handler" end define_method(:handle_async, &block) end else raise ArgumentError, 'base must respond to #handle or #handle_async' end end
# File lib/aws/core/http/handler.rb, line 53 def handle(request, http_response) @base.handle(request, http_response) end
# File lib/aws/core/http/handler.rb, line 57 def handle_async(request, http_response, handle) Thread.new do begin self.handle(request, http_response) rescue => e handle.signal_failure else handle.signal_success end end end
# File lib/aws/core/http/handler.rb, line 69 def sleep_with_callback seconds, &block Kernel.sleep(seconds) yield end