lib/zoomq/server/worker.rb in zoomq-0.1.1 vs lib/zoomq/server/worker.rb in zoomq-0.2.0
- old
+ new
@@ -1,35 +1,33 @@
java_import org.zeromq.ZMQ
-java_import org.zeromq.ZContext
-java_import org.zeromq.ZLoop
-require 'zoomq/server/request_handler'
+require 'zmachine'
+require 'zoomq/server/connection'
module ZooMQ
class Server
class Worker
attr_reader :server
def initialize(server)
@server = server
- @zloop = ZLoop.new
- @zloop.verbose(true)
- initialize_socket
end
- def initialize_socket
- @socket = @server.create_socket(ZMQ::ROUTER)
- @port = @socket.bind("tcp://*:*")
- RequestHandler.new(@socket).register(@zloop, self)
- Thread.current.name = "#{@server.fqdn}:#{@port}"
- @socket.identity = Thread.current[:name].to_java_bytes
+ def run
+ ZMachine.run { initialize_socket }
end
- def run
- @server.log.info("pubdater:worker", run: true, announce: @socket.identity)
- @server.announce(@socket.identity)
- @zloop.start
+ def initialize_socket
+ $log.info("zoomq:server:worker", bind: "tcp://*:*")
+ ZMachine.start_server("tcp://*:*", ZMQ::ROUTER, Connection) do |handler|
+ identity = "#{@server.fqdn}:#{handler.channel.port}"
+ $log.info("zoomq:server:worker", announce: identity)
+ Thread.current.name = "ZMQ::Server::Worker (#{identity})"
+ handler.channel.identity = identity
+ handler.server = @server
+ @server.announce(identity)
+ end
end
end
end
end