class Prevoty::Monitor

Constants

DEFAULT_MAX_SIZE
DEFAULT_TIMEOUT

Public Class Methods

new(client, options = {}) click to toggle source
# File lib/prevoty/monitor.rb, line 9
def initialize(client, options = {})
  options[:reporting_milliseconds] ||= DEFAULT_TIMEOUT

  @client = client
  @max_size = options[:max_size] || DEFAULT_MAX_SIZE
  @timeout = options[:reporting_milliseconds] / 1000
  @log_verbosity = options[:log_verbosity] ||= 'incident'
  @mutex = Mutex.new
  @queue = []
  @rd, @wr = IO.pipe
  @thread = Thread.new do
    loop do
      begin
        Timeout::timeout(@timeout) { @rd.read }
        redo
      rescue Timeout::Error
        @mutex.lock()
        if @queue.size > 0
          process_queue
        end
        @mutex.unlock()
      end
    end
  end
end

Public Instance Methods

process(data) click to toggle source
# File lib/prevoty/monitor.rb, line 35
def process(data)
  @mutex.lock
  @queue.push(data)
  if @queue.size >= @max_size
    process_queue
    @wr.write 1
  end
  @mutex.unlock
end

Private Instance Methods

process_queue() click to toggle source
# File lib/prevoty/monitor.rb, line 46
def process_queue
  raise 'this is an abstract base method. You should use the ContentMonitor or QueryMonitor class instead'
end