mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 14:47:19 -04:00
fixing LOGSTASH-400
This commit is contained in:
parent
4ca820d719
commit
d47c1dc98f
3 changed files with 23 additions and 18 deletions
|
@ -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
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue