Class: Ccp::Kvs::Tokyo::Cabinet

Inherits:
Base
  • Object
show all
Includes:
StateMachine
Defined in:
lib/ccp/kvs/tokyo/cabinet.rb

Direct Known Subclasses

Ccp::Kvs::Tch

Constant Summary

Constants included from StateMachine

StateMachine::CLOSED, StateMachine::READABLE, StateMachine::WRITABLE

Instance Method Summary collapse

Methods included from StateMachine

#C!, #R, #R!, #W, #W!, #close, #open, #state, #touch

Methods inherited from Base

#info, #path

Methods included from Core

#[], #[]=, #close, #codec, #codec!, #decode, #encode, #ext, included, #open, #out, #put, #read!, #source, #touch

Constructor Details

#initialize(source) ⇒ Cabinet

Returns a new instance of Cabinet.



7
8
9
10
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 7

def initialize(source)
  @source = source
  @db     = HDB.new
end

Instance Method Details

#countObject



50
51
52
53
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 50

def count
  tryR("count")
  return @db.rnum
end

#del(k) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 36

def del(k)
  tryW("del")
  v = @db[k.to_s]
  if v
    if @db.delete(k.to_s)
      return decode(v)
    else
      tokyo_error!("del(%s): " % k)
    end
  else
    return nil
  end
end

#each(&block) ⇒ Object

iterator



58
59
60
61
62
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 58

def each(&block)
  each_keys do |key|
    block.call(get(key))
  end
end

#each_keys(&block) ⇒ Object



70
71
72
73
74
75
76
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 70

def each_keys(&block)
  tryR("each_keys")
  @db.iterinit
  while key = @db.iternext
    block.call(key)
  end
end

#each_pair(&block) ⇒ Object



64
65
66
67
68
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 64

def each_pair(&block)
  each_keys do |key|
    block.call(key, get(key))
  end
end

#get(k) ⇒ Object

kvs



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 15

def get(k)
  tryR("get")
  v = @db[k.to_s]
  if v
    return decode(v)
  else
    if @db.ecode == HDB::ENOREC
      return nil
    else
      tokyo_error!("get(%s): " % k)
    end
  end
end

#keysObject



78
79
80
81
82
83
84
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 78

def keys
  array = []
  each_keys do |key|
    array << key
  end
  return array
end

#set(k, v) ⇒ Object



29
30
31
32
33
34
# File 'lib/ccp/kvs/tokyo/cabinet.rb', line 29

def set(k,v)
  tryW("set")
  val = encode(v)
  @db[k.to_s] = val or
    tokyo_error!("set(%s): " % k)
end