class KyotoTycoon::Cursor
Attributes
cur[R]
Public Class Methods
new(kt, cur)
click to toggle source
# File lib/kyototycoon/cursor.rb, line 8 def initialize(kt, cur) @kt = kt @cur = cur ObjectSpace.define_finalizer(self){delete!} end
Public Instance Methods
current(step=nil)
click to toggle source
# File lib/kyototycoon/cursor.rb, line 69 def current(step=nil) res = request('/rpc/cur_get', {"step" => step}) [res["key"], res["value"]] end
delete!()
click to toggle source
# File lib/kyototycoon/cursor.rb, line 83 def delete! request('/rpc/cur_delete') end
each(&block)
click to toggle source
# File lib/kyototycoon/cursor.rb, line 14 def each(&block) return to_enum(:each) unless block_given? jump if current == [nil,nil] start_key = key begin @kt.logger.debug("cursor each start with key=#{start_key}") loop do tmp = current(1) @kt.logger.debug("cursor each key=#{tmp.first}") break if tmp == [nil,nil] block.call(tmp) end ensure jump(start_key) end end
jump(key=nil)
click to toggle source
# File lib/kyototycoon/cursor.rb, line 31 def jump(key=nil) request('/rpc/cur_jump',{:key => key}) self end
jump_back(key=nil)
click to toggle source
# File lib/kyototycoon/cursor.rb, line 36 def jump_back(key=nil) request('/rpc/cur_jump_back',{:key => key}) self end
key(step=nil)
click to toggle source
# File lib/kyototycoon/cursor.rb, line 65 def key(step=nil) request('/rpc/cur_get_key', {"step" => step})["key"] end
remove()
click to toggle source
# File lib/kyototycoon/cursor.rb, line 79 def remove request('/rpc/cur_remove') end
seize()
click to toggle source
# File lib/kyototycoon/cursor.rb, line 74 def seize res = request('/rpc/cur_seize') [res["key"], res["value"], res["xt"]] end
step()
click to toggle source
# File lib/kyototycoon/cursor.rb, line 41 def step request('/rpc/cur_step') self end
Also aliased as: next
step_back()
click to toggle source
# File lib/kyototycoon/cursor.rb, line 47 def step_back request('/rpc/cur_step_back') self end
Also aliased as: prev
value(step=nil)
click to toggle source
# File lib/kyototycoon/cursor.rb, line 53 def value(step=nil) request('/rpc/cur_get_value', {"step" => step})["value"] end
value=(value, xt=nil, step=nil)
click to toggle source
# File lib/kyototycoon/cursor.rb, line 57 def value=(value, xt=nil, step=nil) request('/rpc/cur_set_value', { "value" => value, "xt" => xt, "step" => step, }) end
Private Instance Methods
request(path, params={})
click to toggle source
# File lib/kyototycoon/cursor.rb, line 88 def request(path, params={}) params.merge!({ :CUR => @cur, }) res = @kt.request(path, params) Tsvrpc.parse(res[:body], res[:colenc]) end