lib/miu/publisher.rb in miu-0.1.0 vs lib/miu/publisher.rb in miu-0.2.0

- old
+ new

@@ -1,31 +1,25 @@ -require 'miu' require 'miu/socket' -require 'miu/packet' +require 'miu/publishable' +require 'miu/utility' module Miu - class Publisher < Socket - def initialize(options = {}) - options[:port] ||= Miu.default_sub_port - super socket_type, options + module Publisher + class << self + def new(*args, &block) + options = Miu::Utility.extract_options! args + host = args.shift || '127.0.0.1' + port = args.shift || Miu.default_sub_port + socket = options[:socket] || PubSocket - yield self if block_given? - end + klass = Class.new(socket, &block) + klass.send :include, Publishable + klass.send :include, self - # tag, time = nil, body - def send(*args) - packet = Packet.new *args - @socket.send_strings packet.dump - packet.id - end - - private - - def socket_type - if ZMQ::LibZMQ.version3? - ZMQ::XPUB - else - ZMQ::PUB + klass.new.tap do |pub| + address = Miu::Socket.build_address host, port + pub.connect address + end end end end end