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_interrupted ⇒ Object
Callback when ZMQ interrupted by signal.
-
#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.
21 22 23 24 |
# File 'lib/m2r/handler.rb', line 21 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.
14 15 16 |
# File 'lib/m2r/handler.rb', line 14 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)
115 116 |
# File 'lib/m2r/handler.rb', line 115 def after_all(request, response) end |
#after_process(request, response) ⇒ Object
Callback after process_request is done
92 93 94 |
# File 'lib/m2r/handler.rb', line 92 def after_process(request, response) return response end |
#after_reply(request, response) ⇒ Object
Callback after sending the response back
102 103 |
# File 'lib/m2r/handler.rb', line 102 def after_reply(request, response) end |
#listen ⇒ Object
Start processing request
27 28 29 30 31 32 |
# File 'lib/m2r/handler.rb', line 27 def listen catch(:stop) do loop { one_loop } end @connection.close end |
#on_disconnect(request) ⇒ Object
Callback executed when response could not be delivered by Mongrel2 because client already disconnected.
69 70 |
# File 'lib/m2r/handler.rb', line 69 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
126 127 |
# File 'lib/m2r/handler.rb', line 126 def on_error(request, response, error) end |
#on_interrupted ⇒ Object
Callback when ZMQ interrupted by signal
132 133 |
# File 'lib/m2r/handler.rb', line 132 def on_interrupted end |
#on_request(request) ⇒ Object
Callback when a request is received
51 52 |
# File 'lib/m2r/handler.rb', line 51 def on_request(request) end |
#on_upload_done(request) ⇒ Object
Callback when async-upload finished
83 84 |
# File 'lib/m2r/handler.rb', line 83 def on_upload_done(request) end |
#on_upload_start(request) ⇒ Object
Callback when async-upload started
76 77 |
# File 'lib/m2r/handler.rb', line 76 def on_upload_start(request) end |
#on_wait ⇒ Object
Callback executed when waiting for a request
44 45 |
# File 'lib/m2r/handler.rb', line 44 def on_wait() end |
#process(request) ⇒ Response, ...
Override to return a response
60 61 62 |
# File 'lib/m2r/handler.rb', line 60 def process(request) raise NotImplementedError end |
#stop ⇒ Object
Schedule stop after processing request
35 36 37 |
# File 'lib/m2r/handler.rb', line 35 def stop @stop = true end |