class Sparkey::LogIterator

Public Class Methods

new(log_reader) click to toggle source
# File lib/sparkey/log_iterator.rb, line 4
def initialize(log_reader)
  @log_reader = log_reader

  ptr = FFI::MemoryPointer.new(:pointer)

  handle_status Sparkey::Native.logiter_create(ptr, @log_reader.ptr)

  @log_iter_ptr = ptr.read_pointer
end

Public Instance Methods

<=>(iterator) click to toggle source
# File lib/sparkey/log_iterator.rb, line 34
def <=>(iterator)
  ptr = FFI::MemoryPointer.new(:int)

  handle_status Sparkey::Native.logiter_keycmp(@log_iter_ptr, iterator.ptr, @log_reader.ptr, ptr)

  ptr.read_int
end
active?() click to toggle source
# File lib/sparkey/log_iterator.rb, line 46
def active?
  state == :iter_active
end
close() click to toggle source
# File lib/sparkey/log_iterator.rb, line 124
def close
  ptr = FFI::MemoryPointer.new(:pointer).write_pointer(@log_iter_ptr)

  Sparkey::Native.logiter_close(ptr)
end
closed?() click to toggle source
# File lib/sparkey/log_iterator.rb, line 54
def closed?
  state == :iter_closed
end
entry_delete?() click to toggle source
# File lib/sparkey/log_iterator.rb, line 62
def entry_delete?
  type == :entry_delete
end
entry_put?() click to toggle source
# File lib/sparkey/log_iterator.rb, line 58
def entry_put?
  type == :entry_put
end
get_key() click to toggle source
# File lib/sparkey/log_iterator.rb, line 74
def get_key
  max_key_length = @log_reader.max_key_length
  buffer_ptr = FFI::MemoryPointer.new(:uint8, max_key_length)
  buffer_length_ptr = FFI::MemoryPointer.new(:uint64)

  handle_status Sparkey::Native.logiter_fill_key(@log_iter_ptr, @log_reader.ptr, max_key_length, buffer_ptr, buffer_length_ptr)

  buffer_ptr.read_bytes(buffer_length_ptr.read_uint64)
end
get_key_chunk(chunk_size = 1024) { |read_pointer.read_bytes(buffer_length)| ... } click to toggle source
# File lib/sparkey/log_iterator.rb, line 84
def get_key_chunk(chunk_size = 1024)
  buffer = FFI::Buffer.alloc_out(:uint8, chunk_size)
  buffer_length_ptr = FFI::MemoryPointer.new(:uint64)

  loop do
    handle_status Sparkey::Native.logiter_keychunk(@log_iter_ptr, @log_reader.ptr, chunk_size, buffer, buffer_length_ptr)

    buffer_length = buffer_length_ptr.read_uint64

    break if buffer_length.zero?

    yield buffer.read_pointer.read_bytes(buffer_length)
  end
end
get_value() click to toggle source
# File lib/sparkey/log_iterator.rb, line 99
def get_value
  max_value_length = @log_reader.max_value_length
  buffer_ptr = FFI::MemoryPointer.new(:uint8, max_value_length)
  buffer_length_ptr = FFI::MemoryPointer.new(:uint64)

  handle_status Sparkey::Native.logiter_fill_value(@log_iter_ptr, @log_reader.ptr, max_value_length, buffer_ptr, buffer_length_ptr)

  buffer_ptr.read_bytes(buffer_length_ptr.read_uint64)
end
get_value_chunk(chunk_size = 1024) { |read_pointer.read_bytes(buffer_length)| ... } click to toggle source
# File lib/sparkey/log_iterator.rb, line 109
def get_value_chunk(chunk_size = 1024)
  buffer = FFI::Buffer.alloc_out(:uint8, chunk_size)
  buffer_length_ptr = FFI::MemoryPointer.new(:uint64)

  loop do
    handle_status Sparkey::Native.logiter_valuechunk(@log_iter_ptr, @log_reader.ptr, chunk_size, buffer, buffer_length_ptr)

    buffer_length = buffer_length_ptr.read_uint64

    break if buffer_length.zero?

    yield buffer.read_pointer.read_bytes(buffer_length)
  end
end
invalid?() click to toggle source
# File lib/sparkey/log_iterator.rb, line 50
def invalid?
  state == :iter_invalid
end
key_length() click to toggle source
# File lib/sparkey/log_iterator.rb, line 66
def key_length
  Sparkey::Native.logiter_keylen(@log_iter_ptr)
end
new?() click to toggle source
# File lib/sparkey/log_iterator.rb, line 42
def new?
  state == :iter_new
end
next() click to toggle source
# File lib/sparkey/log_iterator.rb, line 14
def next
  handle_status Sparkey::Native.logiter_next(@log_iter_ptr, @log_reader.ptr)
end
ptr() click to toggle source
# File lib/sparkey/log_iterator.rb, line 130
def ptr
  @log_iter_ptr
end
reset() click to toggle source
# File lib/sparkey/log_iterator.rb, line 22
def reset
  handle_status Sparkey::Native.logiter_reset(@log_iter_ptr, @log_reader.ptr)
end
skip(count) click to toggle source
# File lib/sparkey/log_iterator.rb, line 18
def skip(count)
  handle_status Sparkey::Native.logiter_skip(@log_iter_ptr, @log_reader.ptr, count)
end
state() click to toggle source
# File lib/sparkey/log_iterator.rb, line 26
def state
  Sparkey::Native.logiter_state(@log_iter_ptr)
end
type() click to toggle source
# File lib/sparkey/log_iterator.rb, line 30
def type
  Sparkey::Native.logiter_type(@log_iter_ptr)
end
value_length() click to toggle source
# File lib/sparkey/log_iterator.rb, line 70
def value_length
  Sparkey::Native.logiter_valuelen(@log_iter_ptr)
end