Namdak Tonpa 4 years ago
parent
commit
b30208be7a
1 changed files with 11 additions and 11 deletions
  1. 11 11
      src/stores/kvs_rocks.erl

+ 11 - 11
src/stores/kvs_rocks.erl

@@ -39,21 +39,21 @@ o(Key,FK,Dir,Fx) ->
   S = size(FK),
 
   Run = fun (F,K,H,V,Acc) when binary_part(K,{0,S}) == FK -> {F(H,Dir),H,[V|Acc]}; % continue
-            (_,K,H,V,Acc) -> close_it(H), % gracely quit
-                             throw({ok,fd(K),bt(V),[bt(A1)||A1<-Acc]}) end,
+            (_,K,H,V,Acc) -> close_it(H),                                          % failsafe close
+                             throw({ok,fd(K),bt(V),[bt(A1)||A1<-Acc]}) end,        % acc unfold
 
   RangeCheckRun = fun(F,K,V,H) -> case F(H,prev) of
-      {ok,K1,V1} when binary_part(K,{0,S}) == FK -> {{ok,K1,V1},H,[V]}; % return
-      {ok,K1,V1} -> Run(F,K1,H,V1,[]);
-      E -> E % violation
+      {ok,K1,V1} when binary_part(K,{0,S}) == FK -> {{ok,K1,V1},H,[V]}; % return (range-check error)
+      {ok,K1,V1} -> Run(F,K1,H,V1,[]);                                  % run prev-take chain
+      E -> E                                                            % violation
   end end,
 
-  It = fun(F,{ok,H})            -> {F(H,{seek,Key}),H};
-          (F,{{ok,K,V},H}) when Dir =:= prev -> RangeCheckRun(F,K,V,H); % first move
-          (F,{{ok,K,V},H})      -> Run(F,K,H,V,[]); % first move
-          (F,{{ok,K,V},H,A})    -> Run(F,K,H,V,A); % CPS continuator
-          (_,{{error,_},H,Acc}) -> {{ok,[],[]},H,Acc};
-          (F,{R,O})             -> F(R,O);
+  It = fun(F,{ok,H})            -> {F(H,{seek,Key}),H};                 % first move (seek)
+          (F,{{ok,K,V},H}) when Dir =:= prev -> RangeCheckRun(F,K,V,H); % first chained prev-take
+          (F,{{ok,K,V},H})      -> Run(F,K,H,V,[]);                     % first chained next-take
+          (F,{{ok,K,V},H,A})    -> Run(F,K,H,V,A);                      % chained CPS-take continuator
+          (_,{{error,_},H,Acc}) -> {{ok,[],[]},H,Acc};                  % error effects
+          (F,{R,O})             -> F(R,O);                              % chain constructor
           (F,H)                 -> F(H) end,
 
   catch case lists:foldl(It, {ref(),[]}, Fx) of