Class: AWS::Core::Http::Handler
- Inherits:
-
Object
- Object
- AWS::Core::Http::Handler
- Defined in:
- lib/aws/core/http/handler.rb
Instance Attribute Summary collapse
-
#base ⇒ Object
readonly
Returns the value of attribute base.
Instance Method Summary collapse
- #handle(request, http_response) ⇒ Object
- #handle_async(request, http_response, handle) ⇒ Object
-
#initialize(base, &block) ⇒ Handler
constructor
A new instance of Handler.
- #sleep_with_callback(seconds, &block) ⇒ Object
Constructor Details
#initialize(base, &block) ⇒ Handler
Returns a new instance of Handler.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# 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 |
Instance Attribute Details
#base ⇒ Object (readonly)
Returns the value of attribute base.
21 22 23 |
# File 'lib/aws/core/http/handler.rb', line 21 def base @base end |
Instance Method Details
#handle(request, http_response) ⇒ Object
53 54 55 |
# File 'lib/aws/core/http/handler.rb', line 53 def handle(request, http_response) @base.handle(request, http_response) end |
#handle_async(request, http_response, handle) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 |
# 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 |
#sleep_with_callback(seconds, &block) ⇒ Object
69 70 71 72 |
# File 'lib/aws/core/http/handler.rb', line 69 def sleep_with_callback seconds, &block Kernel.sleep(seconds) yield end |