class Ccp::Kvs::Kyoto::Cabinet
Public Class Methods
new(source)
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 7 def initialize(source) @source = source @db = DB.new end
Public Instance Methods
clear()
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 80 def clear tryW("clear") @db.clear or kyoto_error!("clear: ") end
count()
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 53 def count tryR("count") return @db.count end
del(k)
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 34 def del(k) tryW("del") v = @db[k.to_s] if v if @db.delete(k.to_s) return decode(v) else kyoto_error!("del(%s): " % k) end else return nil end end
each(&block)
click to toggle source
iterator
# File lib/ccp/kvs/kyoto/cabinet.rb, line 88 def each(&block) each_pair(&block) end
each_key(&block)
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 103 def each_key(&block) tryR("each_key") # TODO: Waste memory! But kc ignores exceptions in his each block. array = [] @db.each_key{|k| array << k.first} or kyoto_error!("each_key: ") array.each do |k| block.call(k) end end
each_pair(&block)
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 92 def each_pair(&block) tryR("each_pair") # TODO: Waste memory! But kc ignores exceptions in his each block. array = [] @db.each{|k, v| array << [k, decode(v)]} or kyoto_error!("each_pair: ") array.each do |a| block.call(a[0], a[1]) end end
exist?(k)
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 48 def exist?(k) tryR("exist?") return !! @db[k.to_s] # TODO: fast access end
first()
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 128 def first tryR("first") @db.cursor_process {|cur| cur.jump k, v = cur.get(true) return [k, decode(v)] } end
first_key()
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 124 def first_key first.first end
get(k)
click to toggle source
kvs
# File lib/ccp/kvs/kyoto/cabinet.rb, line 15 def get(k) tryR("get") v = @db[k.to_s] if v return decode(v) else # tc, kc is not safe for file deletion or unexpected stuffs # if @db.error.is_a?(KyotoCabinet::Error::XNOREC) return nil end end
keys()
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 114 def keys tryR("keys") array = [] each_key do |key| array << key end return array end
read()
click to toggle source
bulk operations (not DRY but fast)
# File lib/ccp/kvs/kyoto/cabinet.rb, line 61 def read tryR("read") hash = {} @db.each do |k, v| v or kyoto_error!("each(%s): " % k) hash[k] = decode(v) end return hash end
set(k,v)
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 27 def set(k,v) tryW("set") val = encode(v) @db.set(k.to_s, val) or kyoto_error!("set(%s): " % k) end
write(h)
click to toggle source
# File lib/ccp/kvs/kyoto/cabinet.rb, line 71 def write(h) tryW("write") h.each_pair do |k,v| val = encode(v) @db[k.to_s] = val or kyoto_error!("write(%s): " % k) end return h end