Class: LogfileInterval::IntervalBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/logfile_interval/interval_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logfile_set, length) ⇒ IntervalBuilder

Returns a new instance of IntervalBuilder.



5
6
7
8
9
# File 'lib/logfile_interval/interval_builder.rb', line 5

def initialize(logfile_set, length)
  @logfile_set  = logfile_set
  @parser       = logfile_set.parser
  @length       = length
end

Instance Attribute Details

#lengthObject (readonly)

Returns the value of attribute length.



3
4
5
# File 'lib/logfile_interval/interval_builder.rb', line 3

def length
  @length
end

#logfile_setObject (readonly)

Returns the value of attribute logfile_set.



3
4
5
# File 'lib/logfile_interval/interval_builder.rb', line 3

def logfile_set
  @logfile_set
end

#parserObject (readonly)

Returns the value of attribute parser.



3
4
5
# File 'lib/logfile_interval/interval_builder.rb', line 3

def parser
  @parser
end

Instance Method Details

#each_interval {|current_interval| ... } ⇒ Object

Yields:

  • (current_interval)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/logfile_interval/interval_builder.rb', line 11

def each_interval
  return enum_for(:each_interval) unless block_given?
  
  secs = (Time.now.to_i / length.to_i) * length.to_i
  rounded_end_time = Time.at(secs)
  current_interval = Interval.new(rounded_end_time, length, parser)

  logfile_set.each_parsed_line do |record|
    next if record.time > current_interval.end_time
    while record.time <= current_interval.start_time
      yield current_interval
      current_interval = Interval.new(current_interval.start_time, length, parser)
    end
    current_interval.add_record(record)
  end

  yield current_interval if current_interval.size>0
end

#last_intervalObject



30
31
32
33
34
# File 'lib/logfile_interval/interval_builder.rb', line 30

def last_interval
  each_interval do |interval|
    return interval
  end
end