lib/miu/socket.rb in miu-0.0.6 vs lib/miu/socket.rb in miu-0.1.0
- old
+ new
@@ -7,19 +7,11 @@
attr_reader :context, :socket
def initialize(socket_type, options = {})
@host = options[:host] || '127.0.0.1'
@port = options[:port]
-
- if options[:context]
- @context = options[:context]
- @terminate_context = false
- else
- @context = ZMQ::Context.new(options[:io_threads] || 1)
- @terminate_context = true
- end
-
+ @context = Miu.context
@socket = @context.socket socket_type
end
def bind
rc = @socket.bind "tcp://#{@host}:#{@port}"
@@ -31,22 +23,23 @@
rc = @socket.connect "tcp://#{@host}:#{@port}"
error_check rc
self
end
- def forward(forwarder)
+ def forward(to)
+ parts = []
loop do
message = ZMQ::Message.new
@socket.recvmsg message
+ parts << message.copy_out_string
more = @socket.more_parts?
- forwarder.socket.sendmsg message, (more ? ZMQ::SNDMORE : 0)
- break unless more
+ to.socket.sendmsg message, (more ? ZMQ::SNDMORE : 0)
+ return parts unless more
end
end
def close
@socket.close
- @context.terminate if @terminate_context
end
protected
def error_check(rc, source = nil)