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
next()
Alias for: step
prev()
Alias for: step_back
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