lib/dripdrop/agent.rb in dripdrop-0.0.3 vs lib/dripdrop/agent.rb in dripdrop-0.1.0

- old
+ new

@@ -1,23 +1,41 @@ require 'dripdrop/message' -require 'zmq' +#Check if we're in 1.8.7 +unless defined?(RUBY_ENGINE) + require 'zmq' + ZMQGEM = :rbzmq +else + require 'ffi-rzmq' + ZMQGEM = :ffirzmq +end +require 'uri' require 'bert' class DripDrop #The Agent class is a simple ZMQ Pub client. It uses DripDrop::Message messages class Agent attr_reader :address, :context, :socket #address should be a string like tcp://127.0.0.1 - def initialize(address) - @address = address + def initialize(sock_type,address,sock_ctype) @context = ZMQ::Context.new(1) - @socket = @context.socket(ZMQ::PUB) - @socket.connect(@address) + @socket = @context.socket(sock_type) + if sock_ctype == :bind + @socket.bind(address) + else + @socket.connect(address) + end end #Sends a DripDrop::Message to the socket def send_message(name,body,head={}) - puts @socket.send(DripDrop::Message.new(name,:body => body, :head => head).encoded, 0) + message = DripDrop::Message.new(name,:body => body, :head => head).encoded + if ZMQGEM == :rbzmq + @socket.send name, ZMQ::SNDMORE + @socket.send message + else + @socket.send_string name, ZMQ::SNDMORE + @socket.send_string message + end end end end