From 3710d09fbf85b7484a57b0a1cc9dfc85dee89a5c Mon Sep 17 00:00:00 2001 From: martinsumner Date: Fri, 21 Oct 2016 15:30:53 +0100 Subject: [PATCH] Reuse codec key comparison There was duplication of key comparison logic between leveled_codec and leveled_sft. Now both use the leveled_codec key_dominates function --- src/leveled_sft.erl | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/leveled_sft.erl b/src/leveled_sft.erl index 14ba7df..60054a1 100644 --- a/src/leveled_sft.erl +++ b/src/leveled_sft.erl @@ -1069,25 +1069,21 @@ key_dominates_expanded([], [H2|T2], Level) -> {{next_key, H2}, [], maybe_expand_pointer(T2)} end; key_dominates_expanded([H1|T1], [H2|T2], Level) -> - {{K1, V1}, {K2, V2}} = {H1, H2}, - {Sq1, St1, _MD1} = leveled_codec:striphead_to_details(V1), - {Sq2, St2, _MD2} = leveled_codec:striphead_to_details(V2), - case K1 of - K2 -> - case Sq1 > Sq2 of - true -> - {skipped_key, [H1|T1], maybe_expand_pointer(T2)}; - false -> - {skipped_key, maybe_expand_pointer(T1), [H2|T2]} - end; - K1 when K1 < K2 -> + case leveled_codec:key_dominates(H1, H2) of + left_hand_first -> + St1 = leveled_codec:strip_to_statusonly(H1), case maybe_reap_expiredkey(St1, Level) of true -> {skipped_key, maybe_expand_pointer(T1), [H2|T2]}; false -> {{next_key, H1}, maybe_expand_pointer(T1), [H2|T2]} end; - _ -> + left_hand_dominant -> + {skipped_key, [H1|T1], maybe_expand_pointer(T2)}; + right_hand_dominant -> + {skipped_key, maybe_expand_pointer(T1), [H2|T2]}; + right_hand_first -> + St2 = leveled_codec:strip_to_statusonly(H2), case maybe_reap_expiredkey(St2, Level) of true -> {skipped_key, [H1|T1], maybe_expand_pointer(T2)};