fixing LOGSTASH-400

This commit is contained in:
John E. Vincent 2012-02-06 21:18:38 -05:00
parent 4ca820d719
commit d47c1dc98f
3 changed files with 23 additions and 18 deletions

View file

@ -73,17 +73,10 @@ class LogStash::Inputs::ZeroMQ < LogStash::Inputs::Base
error_check(@zsocket.setsockopt(ZMQ::LINGER, 1),
"while setting ZMQ::LINGER == 1)")
# TODO (lusis)
# wireup sockopt hash
if @sockopt
@sockopt.each do |opt,value|
sockopt = opt.split('::')[1]
option = ZMQ.const_defined?(sockopt) ? ZMQ.const_get(sockopt) : ZMQ.const_missing(sockopt)
error_check(@zsocket.setsockopt(option, value),
"while setting #{opt} == 1)")
end
setopts(@zsocket, @sockopt)
end
@address.each do |addr|
setup(@zsocket, addr)
end

View file

@ -73,16 +73,8 @@ class LogStash::Outputs::ZeroMQ < LogStash::Outputs::Base
error_check(@zsocket.setsockopt(ZMQ::LINGER, 1),
"while setting ZMQ::LINGER == 1)")
# TODO (lusis)
# wireup sockopt hash better
# making assumptions on split
if @sockopt
@sockopt.each do |opt,value|
sockopt = opt.split('::')[1]
option = ZMQ.const_defined?(sockopt) ? ZMQ.const_get(sockopt) : ZMQ.const_missing(sockopt)
error_check(@zsocket.setsockopt(option, value),
"while setting #{opt} == 1)")
end
setopts(@zsocket, @sockopt)
end
@address.each do |addr|

View file

@ -3,6 +3,9 @@ require "logstash/namespace"
module LogStash::Util::ZeroMQ
CONTEXT = ZMQ::Context.new
# LOGSTASH-400
# see https://github.com/chuckremes/ffi-rzmq/blob/master/lib/ffi-rzmq/socket.rb#L93-117
STRING_OPTS = %w{IDENTITY SUBSCRIBE UNSUBSCRIBE}
def context
CONTEXT
@ -23,4 +26,21 @@ module LogStash::Util::ZeroMQ
raise "ZeroMQ Error while #{doing}"
end
end # def error_check
def setopts(socket, options)
options.each do |opt,value|
sockopt = opt.split('::')[1]
option = ZMQ.const_defined?(sockopt) ? ZMQ.const_get(sockopt) : ZMQ.const_missing(sockopt)
unless STRING_OPTS.include?(sockopt)
begin
Float(value)
value = value.to_i
rescue ArgumentError
raise "#{sockopt} requires a numeric value. #{value} is not numeric"
end
end # end unless
error_check(socket.setsockopt(option, value),
"while setting #{opt} == #{value}")
end # end each
end # end setopts
end # module LogStash::Util::ZeroMQ