Class: FileWatch::SincedbRecordSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/filewatch/sincedb_record_serializer.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sincedb_value_expiry) ⇒ SincedbRecordSerializer



10
11
12
# File 'lib/filewatch/sincedb_record_serializer.rb', line 10

def initialize(sincedb_value_expiry)
  @sincedb_value_expiry = sincedb_value_expiry
end

Class Method Details

.days_to_seconds(days) ⇒ Object



6
7
8
# File 'lib/filewatch/sincedb_record_serializer.rb', line 6

def self.days_to_seconds(days)
  (24 * 3600) * days.to_f
end

Instance Method Details

#deserialize(io) ⇒ Object



27
28
29
30
31
# File 'lib/filewatch/sincedb_record_serializer.rb', line 27

def deserialize(io)
  io.each do |record|
    yield deserialize_record(record) #.tap{|val| STDERR.puts val}
  end
end

#deserialize_record(record) ⇒ Object



37
38
39
40
41
# File 'lib/filewatch/sincedb_record_serializer.rb', line 37

def deserialize_record(record)
  return [] if record.nil? || record.empty?
  parts = record.split(" ")
  parse_line_v2(parts) || parse_line_v1(parts)
end

#serialize(db, io, as_of = Time.now.to_f) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/filewatch/sincedb_record_serializer.rb', line 15

def serialize(db, io, as_of = Time.now.to_f)
  expired_keys = []
  db.each do |key, value|
    if as_of > value.last_changed_at_expires(@sincedb_value_expiry)
      expired_keys << key
      next
    end
    io.write(serialize_record(key, value))
  end
  expired_keys
end

#serialize_record(k, v) ⇒ Object



33
34
35
# File 'lib/filewatch/sincedb_record_serializer.rb', line 33

def serialize_record(k, v)
  "#{k} #{v}\n" # effectively InodeStruct#to_s SincedbValue#to_s
end