class QmailLog::Analyzer

Public Class Methods

analyze(log, data, qid_from_did, memory) click to toggle source
# File lib/qmail_log/analyzer.rb, line 8
def analyze log, data, qid_from_did, memory
  time     = Tai64.parse(log.split[0]).to_time.to_s
  content  = log.partition(' ')[-1]
  queue_id = queue_id(content, qid_from_did)

  case content
  when /(new)/
    memory[queue_id] = { time: {} }

  when /(info)/
    memory[queue_id].merge!( info(content) )

  when /(starting)/
    memory[queue_id].merge!( starting(content) )
    qid_from_did[ memory[queue_id][:delivery_id] ] = queue_id

  when /(delivery)/
    memory[queue_id].merge!( delivery(content) )

  when /end/
    memory[queue_id][:time][:end] = time
    data << memory[queue_id].merge!({ queue_id: queue_id })
  end

  memory[queue_id][:time][$1.to_sym] = time if $1
end