From dc6b383aa4a9cc1e2793c4d9f3be81bd676b7a20 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Sat, 27 Sep 2014 15:45:14 +0200 Subject: wip --- src/ht.erl | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/ht.erl') diff --git a/src/ht.erl b/src/ht.erl index 74f8ab4..cd4e57c 100644 --- a/src/ht.erl +++ b/src/ht.erl @@ -51,8 +51,8 @@ stop() -> gen_server:call(?MODULE, stop). size() -> gen_server:call(?MODULE, size). -add(Entry) -> - gen_server:call(?MODULE, {add, Entry}). +add(Hash) -> + gen_server:call(?MODULE, {add, Hash}). root() -> gen_server:call(?MODULE, root). root(Version) -> @@ -91,8 +91,8 @@ handle_call(stop, _From, State) -> {stop, normal, stopped, State}; handle_call(size, _From, State) -> {reply, State#tree.version + 1, State}; -handle_call({add, Entry}, _From, State) -> - {reply, ok, add(State, Entry)}; +handle_call({add, Hash}, _From, State) -> + {reply, ok, add(State, Hash)}; handle_call(root, _From, State) -> {NewState, Hash} = head(State, State#tree.version), {reply, Hash, NewState}; @@ -245,11 +245,10 @@ first_left_node(Layer, Index, BAL) -> false -> {Layer, Index} end. -%% @doc Add an entry but don't update the tree. +%% @doc Add a hash but don't update the tree. -spec add(tree(), binary()) -> tree(). -add(Tree = #tree{version = V, store = Store}, Entry) -> - Tree#tree{version = V + 1, - store = ts:add(Store, 0, mkleafhash(Entry))}. +add(Tree = #tree{version = V, store = Store}, Hash) -> + Tree#tree{version = V + 1, store = ts:add(Store, 0, Hash)}. %% @doc Return a new tree. -spec new(list()) -> tree(). @@ -261,13 +260,14 @@ new([-1]) -> new([]); %% Initialise tree from db. new([Version]) when is_integer(Version) -> - foldl(fun(MTL, Tree) -> + foldl(fun(Hash, Tree) -> %% Return value becomes Tree in next invocation. - add(Tree, plop:serialise(MTL)) - end, new([]), [X || {X, _} <- db:get_by_index_sorted(0, Version)]); -%% Initialise tree from List. + add(Tree, Hash) + end, new([]), [H || {_I, H, _E} <- + db:get_by_indices(0, Version, {sorted, true})]); +%% Initialise tree from List with hashes. new([List]) when is_list(List) -> - foldl(fun(SerialisedMTL, Tree) -> add(Tree, SerialisedMTL) end, + foldl(fun(Hash, Tree) -> add(Tree, Hash) end, new([]), List). update(Tree) -> -- cgit v1.1