this repo has no description
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Rename BTree.Iterator to BTree.Reader and separate struct

garrison 61a405e6 6b284f3c

+26 -26
+2 -3
lib/btree/fuzz/model_fuzz.ex
··· 1 1 defmodule Hobbes.BTree.Fuzz.ModelFuzz do 2 2 alias Hobbes.BTree 3 - alias Hobbes.BTree.Iterator 4 3 alias Hobbes.BTree.Fuzz.SimpleKV 5 4 6 5 import Hobbes.FuzzUtils ··· 132 131 # TODO: too sparse, literally always nil 133 132 key = make_key(opt_key_bits) 134 133 135 - btree_result = Iterator.get(btree, read_version, key) 134 + btree_result = BTree.Reader.get(btree, read_version, key) 136 135 simple_result = SimpleKV.get(simple_kv, read_version, key) 137 136 assert btree_result == simple_result 138 137 ··· 156 155 #dbg SimpleKV.dump(simple_kv, read_version), limit: :infinity 157 156 #dbg {start_key, end_key, reverse?, limit} 158 157 159 - btree_result = BTree.Iterator.scan(btree, read_version, start_key, end_key, reverse?, limit) 158 + btree_result = BTree.Reader.scan(btree, read_version, start_key, end_key, reverse?, limit) 160 159 skv_result = SimpleKV.scan(simple_kv, read_version, start_key, end_key, reverse?, limit) 161 160 assert btree_result == skv_result 162 161
+24 -23
lib/btree/reader.ex
··· 1 - defmodule Hobbes.BTree.Iterator do 1 + defmodule Hobbes.BTree.Reader do 2 2 alias Hobbes.BTree 3 - alias Hobbes.BTree.Iterator 4 3 5 4 import ExUnit.Assertions, only: [assert: 1] 6 5 import Hobbes.BTree.Utils 7 6 8 7 @dialyzer :no_improper_lists 9 8 10 - @type t :: %__MODULE__{ 11 - } 12 - @enforce_keys [ 13 - :btree, 14 - :page_stack, 15 - :current_page, 16 - :current_i, 17 - :current_pair, 18 - :reverse?, 19 - ] 20 - defstruct @enforce_keys 9 + defmodule StorageIterator do 10 + @type t :: %__MODULE__{ 11 + } 12 + @enforce_keys [ 13 + :btree, 14 + :page_stack, 15 + :current_page, 16 + :current_i, 17 + :current_pair, 18 + :reverse?, 19 + ] 20 + defstruct @enforce_keys 21 + end 21 22 22 23 @spec get(BTree.t, non_neg_integer, binary) :: binary | nil 23 24 def get(%BTree{} = btree, version, key) do ··· 163 164 end 164 165 end 165 166 166 - @spec new(BTree.t, binary, boolean) :: t 167 + @spec new(BTree.t, binary, boolean) :: StorageIterator.t 167 168 def new(%BTree{} = btree, start_key, reverse?) do 168 169 %{ 169 170 page_store: page_store, ··· 173 174 [{:root_address, {root_index, root_checksum}}] = :ets.lookup(root_store, :root_address) 174 175 root_data = BTree.read_page(page_store, root_index, root_checksum) 175 176 176 - it = %Iterator{ 177 + it = %StorageIterator{ 177 178 btree: btree, 178 179 page_stack: [], 179 180 current_page: root_data, ··· 188 189 end 189 190 end 190 191 191 - @spec next(t) :: t 192 - def next(%Iterator{reverse?: false} = it), do: next_forward(it) 193 - def next(%Iterator{reverse?: true} = it), do: next_backward(it) 192 + @spec next(StorageIterator.t) :: StorageIterator.t 193 + def next(%StorageIterator{reverse?: false} = it), do: next_forward(it) 194 + def next(%StorageIterator{reverse?: true} = it), do: next_backward(it) 194 195 195 - defp seek_backward(%Iterator{} = it, search_key) do 196 + defp seek_backward(%StorageIterator{} = it, search_key) do 196 197 it = seek(it, search_key) 197 198 {[key | _ver], _value} = it.current_pair 198 199 ··· 202 203 end 203 204 end 204 205 205 - defp seek_forward(%Iterator{} = it, search_key) do 206 + defp seek_forward(%StorageIterator{} = it, search_key) do 206 207 it = seek(it, search_key) 207 208 {[key | _ver], _value} = it.current_pair 208 209 ··· 212 213 end 213 214 end 214 215 215 - defp seek(%Iterator{} = it, search_key) do 216 + defp seek(%StorageIterator{} = it, search_key) do 216 217 page_data = it.current_page 217 218 << 218 219 _::binary-size(byte_size(page_data) - c_page_trailer_bytes()), ··· 330 331 end 331 332 end 332 333 333 - defp next_backward(%Iterator{} = it) do 334 + defp next_backward(%StorageIterator{} = it) do 334 335 %{ 335 336 current_page: current_page, 336 337 current_i: current_i, ··· 389 390 end 390 391 end 391 392 392 - defp next_forward(%Iterator{} = it) do 393 + defp next_forward(%StorageIterator{} = it) do 393 394 %{ 394 395 current_page: current_page, 395 396 current_i: current_i,