Class: M2R::Handler Abstract
- Inherits:
-
Object
- Object
- M2R::Handler
- Defined in:
- lib/m2r/handler.rb
Overview
Subclass and override method hooks to implement your own Handler
Basic handler, scaffold for your own Handler. Overwrite hook methods to define behavior. After calling #listen the Handler will block waiting for request from connection generated by #connection_factory, process them and send reponses back.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#connection ⇒ Connection
Used for receiving requests and sending responses.
Instance Method Summary collapse
-
#after_all(request, response) ⇒ Object
Callback after request is processed that is executed even when execption occured.
-
#after_process(request, response) ⇒ Object
Callback after process_request is done.
-
#after_reply(request, response) ⇒ Object
Callback after sending the response back.
-
#initialize(connection_factory, parser) ⇒ Handler
constructor
A new instance of Handler.
-
#listen ⇒ Object
Start processing request.
-
#on_disconnect(request) ⇒ Object
Callback executed when response could not be delivered by Mongrel2 because client already disconnected.
-
#on_error(request, response, error) ⇒ Object
Callback when exception occured.
-
#on_request(request) ⇒ Object
Callback when a request is received.
-
#on_upload_done(request) ⇒ Object
Callback when async-upload finished.
-
#on_upload_start(request) ⇒ Object
Callback when async-upload started.
-
#on_wait ⇒ Object
Callback executed when waiting for a request.
-
#process(request) ⇒ Response, ...
Override to return a response.
-
#stop ⇒ Object
Schedule stop after processing request.
Constructor Details
#initialize(connection_factory, parser) ⇒ Handler
Returns a new instance of Handler.
23 24 25 26 |
# File 'lib/m2r/handler.rb', line 23 def initialize(connection_factory, parser) @connection = connection_factory.connection @parser = parser end |
Instance Attribute Details
#connection ⇒ Connection
Returns used for receiving requests and sending responses.
16 17 18 |
# File 'lib/m2r/handler.rb', line 16 def connection @connection end |
Instance Method Details
#after_all(request, response) ⇒ Object
‘response` might be nil depending on when exception occured.
In case of error this callback is called before on_error
Callback after request is processed that is executed even when execption occured. Useful for releasing resources (closing files etc)
116 117 |
# File 'lib/m2r/handler.rb', line 116 def after_all(request, response) end |
#after_process(request, response) ⇒ Object
Callback after process_request is done
93 94 95 |
# File 'lib/m2r/handler.rb', line 93 def after_process(request, response) return response end |
#after_reply(request, response) ⇒ Object
Callback after sending the response back
103 104 |
# File 'lib/m2r/handler.rb', line 103 def after_reply(request, response) end |
#listen ⇒ Object
Start processing request
29 30 31 32 33 |
# File 'lib/m2r/handler.rb', line 29 def listen catch(:stop) do loop { one_loop } end end |
#on_disconnect(request) ⇒ Object
Callback executed when response could not be delivered by Mongrel2 because client already disconnected.
70 71 |
# File 'lib/m2r/handler.rb', line 70 def on_disconnect(request) end |
#on_error(request, response, error) ⇒ Object
‘request` and/or `response` might be nil depending on when error occured
Callback when exception occured
127 128 |
# File 'lib/m2r/handler.rb', line 127 def on_error(request, response, error) end |
#on_request(request) ⇒ Object
Callback when a request is received
52 53 |
# File 'lib/m2r/handler.rb', line 52 def on_request(request) end |
#on_upload_done(request) ⇒ Object
Callback when async-upload finished
84 85 |
# File 'lib/m2r/handler.rb', line 84 def on_upload_done(request) end |
#on_upload_start(request) ⇒ Object
Callback when async-upload started
77 78 |
# File 'lib/m2r/handler.rb', line 77 def on_upload_start(request) end |
#on_wait ⇒ Object
Callback executed when waiting for a request
45 46 |
# File 'lib/m2r/handler.rb', line 45 def on_wait() end |
#process(request) ⇒ Response, ...
Override to return a response
61 62 63 |
# File 'lib/m2r/handler.rb', line 61 def process(request) raise NotImplementedError end |
#stop ⇒ Object
Schedule stop after processing request
36 37 38 |
# File 'lib/m2r/handler.rb', line 36 def stop @stop = true end |