class Wildsight::Agent::Agent

Public Class Methods

new(config = (Wildsight::Agent::Config.load)) click to toggle source
# File lib/wildsight/agent/agent.rb, line 24
def initialize(config = (Wildsight::Agent::Config.load))
  @config = config
  setup
end

Public Instance Methods

context(name = nil) click to toggle source
# File lib/wildsight/agent/agent.rb, line 33
def context(name = nil)
  name ||= SecureRandom.uuid
  name = name.to_s
  unless @contexts[name]
    @contexts[name] = Wildsight::Context::Context.new(name, self)
    self.logger.log(:debug) { "New context registered #{name}"}
  end
  return @contexts[name]
end
logger() click to toggle source
# File lib/wildsight/agent/agent.rb, line 29
def logger
  @logger
end
submit(type, event) click to toggle source
# File lib/wildsight/agent/agent.rb, line 54
def submit(type, event)
  (@events[type] ||= []) << event
  if @events.size > @config['agent']['threshold']
    self.logger.log(:debug) { 'Uploading collected data' }
    upload
  end
end
unknown_context() click to toggle source
# File lib/wildsight/agent/agent.rb, line 43
def unknown_context
  context('unknown_context')
end
unregister_context(context) click to toggle source
# File lib/wildsight/agent/agent.rb, line 47
def unregister_context(context)
  context = context.name if context.kind_of?(Wildsight::Context::Context)
  name = context.to_s
  self.logger.log(:debug) { "Context unregistered #{name}"}
  @contexts.delete(name)
end
upload() click to toggle source
# File lib/wildsight/agent/agent.rb, line 62
def upload
  payload, @events = @events, {}
  @transport.send(payload) if payload != nil && payload.size > 0
end

Private Instance Methods

setup() click to toggle source
# File lib/wildsight/agent/agent.rb, line 69
def setup
  @logger = Wildsight::Agent::Logger.new(@config)
  @logger.log(:debug) { 'Logger initialized' }

  @events = {}
  @contexts = {}

  @transport = Wildsight::Transport.detect.new(self, @config)
  thread
end
thread() click to toggle source
# File lib/wildsight/agent/agent.rb, line 80
def thread
  @thread ||= Thread.new {
    while true
      begin
        upload
        sleep(@config['agent']['timeout'])
      rescue Exception => e
        puts e.message
        puts e.backtrace
      end
    end
  }.run
end