Class: FileWatch::SincedbRecordSerializer

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sincedb_value_expiry) ⇒ SincedbRecordSerializer

Returns a new instance of SincedbRecordSerializer.



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

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

Class Method Details

.days_to_seconds(days) ⇒ Object



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

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

Instance Method Details

#deserialize(io) ⇒ Object



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

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

#deserialize_record(record) ⇒ Object



43
44
45
46
47
# File 'lib/filewatch/sincedb_record_serializer.rb', line 43

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



21
22
23
24
25
26
27
28
29
30
# File 'lib/filewatch/sincedb_record_serializer.rb', line 21

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



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

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

#update_sincedb_value_expiry_from_days(days) ⇒ Object



17
18
19
# File 'lib/filewatch/sincedb_record_serializer.rb', line 17

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