Sha256: b520d42295a1bb93474d343f3a8854fa1e28c571c4fc33f6c433a5364c52ee0d
Contents?: true
Size: 1.17 KB
Versions: 3
Compression:
Stored size: 1.17 KB
Contents
require 'miu/sockets' require 'ffi-rzmq' module Miu class Proxy attr_reader :frontends, :backends attr_reader :poller PROXY_TO = '@__proxy_to__' def initialize(frontends, backends) @frontends = Array(frontends).map { |s| s.to_io rescue s } @backends = Array(backends).map { |s| s.to_io rescue s } @frontends.each { |s| s.instance_variable_set PROXY_TO, @backends } @backends.each { |s| s.instance_variable_set PROXY_TO, @frontends } @poller = ::ZMQ::Poller.new @frontends.each { |s| @poller.register_readable s } @backends.each { |s| @poller.register_readable s } end def run loop do @poller.poll @poller.readables.each do |from| loop do msg = ::ZMQ::Message.new from.recvmsg msg more = from.more_parts? proxy_to = from.instance_variable_get PROXY_TO proxy_to.each do |to| ctrl = ::ZMQ::Message.new ctrl.copy msg.pointer to.sendmsg ctrl, (more ? ::ZMQ::SNDMORE : 0) end msg.close break unless more end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
miu-0.2.3 | lib/miu/proxy.rb |
miu-0.2.2 | lib/miu/proxy.rb |
miu-0.2.1 | lib/miu/proxy.rb |