class Riemann::Babbler::Sender::Client

Constants

INTERVAL_FLUSH

Attributes

events[RW]
host[RW]
port[RW]

Public Class Methods

new(host) click to toggle source
# File lib/riemann/babbler/sender_client.rb, line 18
def initialize(host)
  @host, @port   = host.split(':')
  @port ||= opts.riemann.port
  @events = Array.new
  start
end

Public Instance Methods

<<(event) click to toggle source
# File lib/riemann/babbler/sender_client.rb, line 46
def <<(event)
  @events.shift if @events.size > opts.riemann.backlog
  @events << event
end
alive?() click to toggle source
# File lib/riemann/babbler/sender_client.rb, line 41
def alive?
  return false if @runner.nil?
  @runner.alive?
end
start() click to toggle source
# File lib/riemann/babbler/sender_client.rb, line 25
def start
  build_client
  @running = true
  @runner = Thread.new {
    while @running
      sleep INTERVAL_FLUSH
      flush
    end
    @runner = nil
  }
end
stop() click to toggle source
# File lib/riemann/babbler/sender_client.rb, line 37
def stop
  @running = false
end

Private Instance Methods

build_client() click to toggle source

riemann client

# File lib/riemann/babbler/sender_client.rb, line 63
def build_client
  @riemann = nil 
  @riemann = Riemann::Babbler::Client.new({
    :host => Resolv.new.getaddress(@host), 
    :port => @port
  })
  @riemann
end
flush() click to toggle source

flush events

# File lib/riemann/babbler/sender_client.rb, line 54
def flush
  unless @events.empty?
    @riemann << @events
    log :debug, "Posted events via (#{@host}:#{@port}): #{events.inspect}"
    @events.clear
  end
end