dxt 4 лет назад
Родитель
Сommit
4cb2a52030
4 измененных файлов с 11 добавлено и 7 удалено
  1. 7 5
      include/stream.hrl
  2. 2 2
      src/kvs.erl
  3. 1 0
      src/layers/kvs_stream.erl
  4. 1 0
      src/stores/kvs_st.erl

+ 7 - 5
include/stream.hrl

@@ -2,14 +2,16 @@
 -define(STREAM_HRL, true).
 -include("kvs.hrl").
 -include("cursors.hrl").
--define(STREAM, [top/1, bot/1, next/1, prev/1, drop/1, take/1, append/2, cut/2,
+-define(STREAM, [top/1, bot/1, next/1, prev/1, drop/1, take/1, append/2, cut/2, feed/1,
                  load_reader/1, writer/1, reader/1, save/1, add/1, remove/2]).
--spec top(#reader{}) -> #reader{}.
--spec bot(#reader{}) -> #reader{}.
--spec next(#reader{}) -> #reader{} | {error,not_found | empty}.
--spec prev(#reader{}) -> #reader{} | {error,not_found | empty}.
+
+-spec top(#reader{})  -> #reader{}.
+-spec bot(#reader{})  -> #reader{}.
+-spec next(#reader{}) -> #reader{}.
+-spec prev(#reader{}) -> #reader{}.
 -spec drop(#reader{}) -> #reader{}.
 -spec take(#reader{}) -> #reader{}.
+-spec feed (term())   -> #reader{}.
 -spec load_reader (term()) -> #reader{}.
 -spec writer (term()) -> #writer{}.
 -spec reader (term()) -> #reader{}.

+ 2 - 2
src/kvs.erl

@@ -138,9 +138,9 @@ count(Tab,#kvs{mod=DBA}) -> DBA:count(Tab).
 index(Tab, Key, Value,#kvs{mod=DBA}) -> DBA:index(Tab, Key, Value).
 seq(Tab, Incr,#kvs{mod=DBA}) -> DBA:seq(Tab, Incr).
 dump(#kvs{mod=Mod}) -> Mod:dump().
-feed(Key,#kvs{st=Mod}=KVS) -> (Mod:take((kvs:reader(Key))#reader{args=-1}))#reader.args.
+feed(Tab,#kvs{st=Mod}) -> Mod:feed(Tab).
 remove(Rec,Feed) -> remove(Rec,Feed,#kvs{mod=dba(),st=kvs_stream()}).
-remove(Rec,Feed, #kvs{st=Mod}=KVS) -> Mod:remove(Rec,Feed).
+remove(Rec,Feed, #kvs{st=Mod}) -> Mod:remove(Rec,Feed).
 head(Key) -> case (kvs:take((kvs:reader(Key))#reader{args=1}))#reader.args of [X] -> X; [] -> [] end.
 head(Key,Count) -> (kvs:take((kvs:reader(Key))#reader{args=Count,dir=1}))#reader.args.
 fetch(Table, Key) -> fetch(Table, Key, []).

+ 1 - 0
src/layers/kvs_stream.erl

@@ -50,6 +50,7 @@ w({ok,#writer{cache=B,count=Size}},top,C) -> C#reader{cache={tab(B),id(B)},pos=S
 w({error,X},_,_)                          -> {error,X}.
 
 % section: take, drop
+feed(Feed) -> take((reader(Feed))#reader{args=-1}).
 
 drop(#reader{cache=[]}=C) -> C#reader{args=[]};
 drop(#reader{dir=D,cache=B,args=N,pos=P}=C)  -> drop(acc(D),N,C,C,P,B).

+ 1 - 0
src/stores/kvs_st.erl

@@ -18,6 +18,7 @@ si(M,T) -> se(#it.id, M, T).
 id(T) -> e(#it.id, T).
 
 % section: next, prev
+feed(Feed) -> take((reader(Feed))#reader{args=-1}).
 
 top(#reader{}=C) -> C#reader{dir=1}.
 bot(#reader{}=C) -> C#reader{dir=0}.