Class: QmailLog::Analyzer

Inherits:
Object
  • Object
show all
Extended by:
QmailLog::Analyze::Helper
Defined in:
lib/qmail_log/analyzer.rb

Class Method Summary collapse

Methods included from QmailLog::Analyze::Helper

delivery, info, queue_id, starting

Class Method Details

.analyze(log, data, qid_from_did, memory) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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