Class: Sparkey::LogIterator
- Inherits:
-
Object
- Object
- Sparkey::LogIterator
- Includes:
- Errors
- Defined in:
- lib/sparkey/log_iterator.rb
Direct Known Subclasses
Instance Method Summary collapse
- #<=>(iterator) ⇒ Object
- #active? ⇒ Boolean
- #close ⇒ Object
- #closed? ⇒ Boolean
- #entry_delete? ⇒ Boolean
- #entry_put? ⇒ Boolean
- #get_key ⇒ Object
- #get_key_chunk(chunk_size = 1024) ⇒ Object
- #get_value ⇒ Object
- #get_value_chunk(chunk_size = 1024) ⇒ Object
-
#initialize(log_reader) ⇒ LogIterator
constructor
A new instance of LogIterator.
- #invalid? ⇒ Boolean
- #key_length ⇒ Object
- #new? ⇒ Boolean
- #next ⇒ Object
- #ptr ⇒ Object
- #reset ⇒ Object
- #skip(count) ⇒ Object
- #state ⇒ Object
- #type ⇒ Object
- #value_length ⇒ Object
Methods included from Errors
Constructor Details
#initialize(log_reader) ⇒ LogIterator
Returns a new instance of LogIterator.
4 5 6 7 8 9 10 11 12 |
# 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 |
Instance Method Details
#<=>(iterator) ⇒ Object
34 35 36 37 38 39 40 |
# 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? ⇒ Boolean
46 47 48 |
# File 'lib/sparkey/log_iterator.rb', line 46 def active? state == :iter_active end |
#close ⇒ Object
124 125 126 127 128 |
# 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? ⇒ Boolean
54 55 56 |
# File 'lib/sparkey/log_iterator.rb', line 54 def closed? state == :iter_closed end |
#entry_delete? ⇒ Boolean
62 63 64 |
# File 'lib/sparkey/log_iterator.rb', line 62 def entry_delete? type == :entry_delete end |
#entry_put? ⇒ Boolean
58 59 60 |
# File 'lib/sparkey/log_iterator.rb', line 58 def entry_put? type == :entry_put end |
#get_key ⇒ Object
74 75 76 77 78 79 80 81 82 |
# 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) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# 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 ⇒ Object
99 100 101 102 103 104 105 106 107 |
# 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) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# 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? ⇒ Boolean
50 51 52 |
# File 'lib/sparkey/log_iterator.rb', line 50 def invalid? state == :iter_invalid end |
#key_length ⇒ Object
66 67 68 |
# File 'lib/sparkey/log_iterator.rb', line 66 def key_length Sparkey::Native.logiter_keylen(@log_iter_ptr) end |
#new? ⇒ Boolean
42 43 44 |
# File 'lib/sparkey/log_iterator.rb', line 42 def new? state == :iter_new end |
#next ⇒ Object
14 15 16 |
# File 'lib/sparkey/log_iterator.rb', line 14 def next handle_status Sparkey::Native.logiter_next(@log_iter_ptr, @log_reader.ptr) end |
#ptr ⇒ Object
130 131 132 |
# File 'lib/sparkey/log_iterator.rb', line 130 def ptr @log_iter_ptr end |
#reset ⇒ Object
22 23 24 |
# 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) ⇒ Object
18 19 20 |
# 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 ⇒ Object
26 27 28 |
# File 'lib/sparkey/log_iterator.rb', line 26 def state Sparkey::Native.logiter_state(@log_iter_ptr) end |