class RIMS::Checksum_KeyValueStore

Public Class Methods

new(kvs) click to toggle source
# File lib/rims/cksum_kvs.rb, line 6
def initialize(kvs)
  @kvs = kvs
end

Public Instance Methods

[](key) click to toggle source
# File lib/rims/cksum_kvs.rb, line 24
def [](key)
  md5_cksum_parse(key, @kvs[key])
end
[]=(key, value) click to toggle source
# File lib/rims/cksum_kvs.rb, line 28
def []=(key, value)
  @kvs[key] = "md5 #{Digest::MD5.hexdigest(value)}\n#{value}"
  value
end
close() click to toggle source
# File lib/rims/cksum_kvs.rb, line 52
def close
  @kvs.close
  self
end
delete(key) click to toggle source
# File lib/rims/cksum_kvs.rb, line 33
def delete(key)
  md5_cksum_parse(key, @kvs.delete(key))
end
destroy() click to toggle source
# File lib/rims/cksum_kvs.rb, line 57
def destroy
  @kvs.destroy
  nil
end
each_key(&block) click to toggle source
# File lib/rims/cksum_kvs.rb, line 41
def each_key(&block)
  return enum_for(:each_key) unless block_given?
  @kvs.each_key(&block)
  self
end
key?(key) click to toggle source
# File lib/rims/cksum_kvs.rb, line 37
def key?(key)
  @kvs.key? key
end
sync() click to toggle source
# File lib/rims/cksum_kvs.rb, line 47
def sync
  @kvs.sync
  self
end

Private Instance Methods

md5_cksum_parse(key, s) click to toggle source
# File lib/rims/cksum_kvs.rb, line 10
def md5_cksum_parse(key, s)
  if (s) then
    s =~ /\A md5 \s (\S+?) \n/x or raise "checksum format error at key: #{key}"
    md5_cksum = $1
    value = $'
    if (Digest::MD5.hexdigest(value) != md5_cksum) then
      raise "checksum error at key: #{key}"
    end

    value
  end
end