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
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 |