Class: Fluent::WinEvtLog::PositionFile

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/in_winevtlog.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file, map, last_pos) ⇒ PositionFile

Returns a new instance of PositionFile.



216
217
218
219
220
# File 'lib/fluent/plugin/in_winevtlog.rb', line 216

def initialize(file, map, last_pos)
  @file = file
  @map = map
  @last_pos = last_pos
end

Class Method Details

.parse(file) ⇒ Object

parsing file and rebuild mysself



236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/fluent/plugin/in_winevtlog.rb', line 236

def self.parse(file)
  map = {}
  file.pos = 0
  file.each_line {|line|
    # check and get a matched line as m
    m = /^([^\t]+)\t([0-9a-fA-F]+)\t([0-9a-fA-F]+)/.match(line)
    next unless m
    ch = m[1] 
    pos = m[2].to_i(16)
    seek = file.pos - line.bytesize + ch.bytesize + 1
    map[ch] = FilePositionEntry.new(file, seek)
  }
  new(file, map, file.pos)
end

Instance Method Details

#[](ch) ⇒ Object



222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/fluent/plugin/in_winevtlog.rb', line 222

def [](ch)
  if m = @map[ch]
    return m
  end
  @file.pos = @last_pos
  @file.write ch
  @file.write "\t"
  seek = @file.pos
  @file.write "00000000\t00000000\n"
  @last_pos = @file.pos
  @map[ch] = FilePositionEntry.new(@file, seek)
end