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