lib/m2r/connection_factory.rb in m2r-1.0.0 vs lib/m2r/connection_factory.rb in m2r-2.0.0
- old
+ new
@@ -1,41 +1,44 @@
require 'm2r'
+require 'ostruct'
module M2R
# {Connection} factory so that every thread can use it generate its own
# {Connection} for communication with Mongrel2.
#
# @api public
class ConnectionFactory
+ class Options < Struct.new(:sender_id, :recv_addr, :send_addr)
+ # @param [String, nil] sender_id {ZMQ::IDENTITY} option for response socket
+ # @param [String] recv_addr ZMQ connection address. This is the
+ # send_spec option from Handler configuration in mongrel2.conf
+ # @param [String] send_addr ZMQ connection address. This is the
+ # recv_spec option from Handler configuration in mongrel2.conf
+ def initialize(sender_id, recv_addr, send_addr)
+ super
+ end
+ end
- # @param [String, nil] sender_id {ZMQ::IDENTITY} option for response socket
- # @param [String] request_addr ZMQ connection address. This is the
- # send_spec option from Handler configuration in mongrel2.conf
- # @param [String] response_addr ZMQ connection address. This is the
- # recv_spec option from Handler configuration in mongrel2.conf
- # @param [#parse] request_parser Mongrel2 request parser
+ # @param [Options] options ZMQ connections options
# @param [ZMQ::Context] context Context for creating new ZMQ sockets
- def initialize(sender_id, request_addr, response_addr, request_parser = Request, context = M2R.zmq_context)
- @sender_id = sender_id.to_s
- @request_addr = request_addr.to_s
- @response_addr = response_addr.to_s
- @request_parser = request_parser
- @context = context
+ def initialize(options, context = M2R.zmq_context)
+ @options = options
+ @context = context
end
- # Builds new Connection which can be used to receive, parse
+ # Builds new Connection which can be used to receive
# Mongrel2 requests and send responses.
#
# @return [Connection]
def connection
request_socket = @context.socket(ZMQ::PULL)
- request_socket.connect(@request_addr)
+ request_socket.connect(@options.recv_addr)
response_socket = @context.socket(ZMQ::PUB)
- response_socket.connect(@response_addr)
- response_socket.setsockopt(ZMQ::IDENTITY, @sender_id) if @sender_id
+ response_socket.connect(@options.send_addr)
+ response_socket.setsockopt(ZMQ::IDENTITY, @options.sender_id) if @options.sender_id
- Connection.new(request_socket, response_socket, @request_parser)
+ Connection.new(request_socket, response_socket)
end
end
end