lib/gelf/transport/udp.rb
module GELF
module Transport
class UDP
attr_accessor :addresses
def initialize(addresses)
@addresses = addresses
end
def send_datagrams(datagrams)
socket = get_socket
idx = get_address_index
host, port = @addresses[idx]
set_address_index((idx + 1) % @addresses.length)
datagrams.each do |datagram|
socket.send(datagram, 0, host, port)
end
end
def close
socket = get_socket
socket.close if socket
end
private
def get_socket
Thread.current[:gelf_udp_socket] ||= UDPSocket.open
end
def get_address_index
Thread.current[:gelf_udp_address_idx] ||= 0
end
def set_address_index(value)
Thread.current[:gelf_udp_address_idx] = value
end
end
end
end