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