Class: FileWatch::SincedbRecordSerializer

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sincedb_value_expiry) ⇒ SincedbRecordSerializer

Returns a new instance of SincedbRecordSerializer.



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

def initialize(sincedb_value_expiry)
  @sincedb_value_expiry = sincedb_value_expiry
  @expired_keys = []
end

Instance Attribute Details

#expired_keysObject (readonly)

Returns the value of attribute expired_keys.



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

def expired_keys
  @expired_keys
end

Instance Method Details

#deserialize(io) ⇒ Object



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

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

#deserialize_record(record) ⇒ Object



39
40
41
42
43
# File 'lib/filewatch/sincedb_record_serializer.rb', line 39

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



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

def serialize(db, io, as_of = Time.now.to_f)
  @expired_keys.clear
  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
end

#serialize_record(k, v) ⇒ Object



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

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

#update_sincedb_value_expiry_from_days(days) ⇒ Object



13
14
15
# File 'lib/filewatch/sincedb_record_serializer.rb', line 13

def update_sincedb_value_expiry_from_days(days)
  @sincedb_value_expiry = Settings.days_to_seconds(days)
end