class Lumberjack::Beats::Client

Public Class Methods

new(opts={}) click to toggle source
# File lib/lumberjack/beats/client.rb, line 10
def initialize(opts={})
  @opts = {
    :port => 0,
    :addresses => [],
    :ssl_certificate => nil,
    :ssl => true,
    :json => false,
  }.merge(opts)

  @opts[:addresses] = [@opts[:addresses]] if @opts[:addresses].class == String
  raise "Must set a port." if @opts[:port] == 0
  raise "Must set atleast one address" if @opts[:addresses].empty? == 0
  raise "Must set a ssl certificate or path" if @opts[:ssl_certificate].nil? && @opts[:ssl]

  @socket = connect
end

Public Instance Methods

host() click to toggle source
# File lib/lumberjack/beats/client.rb, line 46
def host
  @socket.host
end
write(elements, opts={}) click to toggle source
# File lib/lumberjack/beats/client.rb, line 41
def write(elements, opts={})
  @socket.write_sync(elements, opts)
end

Private Instance Methods

connect() click to toggle source
# File lib/lumberjack/beats/client.rb, line 28
def connect
  addrs = @opts[:addresses].shuffle
  begin
    raise "Could not connect to any hosts" if addrs.empty?
    opts = @opts
    opts[:address] = addrs.pop
    Lumberjack::Beats::Socket.new(opts)
  rescue *[Errno::ECONNREFUSED,SocketError]
    retry
  end
end