Class: Fluent::WinEvtLog::PositionFile
- Inherits:
-
Object
- Object
- Fluent::WinEvtLog::PositionFile
- Defined in:
- lib/fluent/plugin/in_winevtlog.rb
Class Method Summary collapse
-
.parse(file) ⇒ Object
parsing file and rebuild mysself.
Instance Method Summary collapse
- #[](ch) ⇒ Object
-
#initialize(file, map, last_pos) ⇒ PositionFile
constructor
A new instance of PositionFile.
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 |