Class: M2R::Connection
- Inherits:
-
Object
- Object
- M2R::Connection
- Defined in:
- lib/m2r/connection.rb
Overview
Connection for exchanging data with mongrel2
Defined Under Namespace
Classes: Error
Instance Method Summary collapse
-
#connection ⇒ Connection
For compatibility with ConnectionFactory.
-
#deliver(uuid, connection_ids, data) ⇒ String
Delivers data to multiple mongrel2 connections.
-
#initialize(request_socket, response_socket) ⇒ Connection
constructor
A new instance of Connection.
-
#receive ⇒ String
Returns Mongrel2 request.
-
#reply(request, response_or_string) ⇒ String
Sends response to Mongrel2 for given request.
Constructor Details
#initialize(request_socket, response_socket) ⇒ Connection
Returns a new instance of Connection.
13 14 15 16 |
# File 'lib/m2r/connection.rb', line 13 def initialize(request_socket, response_socket) @request_socket = request_socket @response_socket = response_socket end |
Instance Method Details
#connection ⇒ Connection
For compatibility with M2R::ConnectionFactory
22 23 24 |
# File 'lib/m2r/connection.rb', line 22 def connection self end |
#deliver(uuid, connection_ids, data) ⇒ String
Delivers data to multiple mongrel2 connections. Useful for streaming.
57 58 59 60 61 62 |
# File 'lib/m2r/connection.rb', line 57 def deliver(uuid, connection_ids, data) msg = "#{uuid} #{TNetstring.dump([*connection_ids].join(' '))} #{data}" ret = @response_socket.send_string(msg, ZMQ::NOBLOCK) raise Error, "Unable to deliver message: #{ZMQ::Util.error_string}" if ret < 0 return msg end |
#receive ⇒ String
Note:
This is blocking call
Returns Mongrel2 request
31 32 33 34 35 |
# File 'lib/m2r/connection.rb', line 31 def receive ret = @request_socket.recv_string(msg = "") raise Error, "Unable to receive message: #{ZMQ::Util.error_string}" if ret < 0 return msg end |
#reply(request, response_or_string) ⇒ String
Sends response to Mongrel2 for given request
43 44 45 46 |
# File 'lib/m2r/connection.rb', line 43 def reply(request, response_or_string) deliver(request.sender, request.conn_id, response_or_string.to_s) deliver(request.sender, request.conn_id, "") if close?(request, response_or_string) end |