Browse Source

fix kvs:join/1 API and adopt store_fs:all/1

Namdak Tonpa 10 years ago
parent
commit
b1a511a4d3

+ 6 - 5
src/store/store_fs.erl

@@ -10,8 +10,7 @@ stop()     -> ok.
 destroy()  -> ok.
 version()  -> {version,"KVS FS"}.
 dir()      -> [ {table,F} || F <- filelib:wildcard("data/*"), filelib:is_dir(F) ].
-join()     -> filelib:ensure_dir("data/").
-join(Node) -> ok. % should be rsync or smth
+join(Node) -> filelib:ensure_dir("data/"). % should be rsync or smth
 change_storage(Table,Type) -> ok.
 
 initialize() ->
@@ -36,13 +35,15 @@ put(Record) ->
     Dir = lists:concat(["data/",TableName,"/"]),
     filelib:ensure_dir(Dir),
     File = lists:concat([Dir,HashKey]),
-    io:format("File: ~p~n",[File]),
     file:write_file(File,BinaryValue,[write,raw,binary,sync]).
 
 delete(Tab, Key) -> ok.
 count(RecordName) -> length(filelib:fold_files(lists:concat(["data/",RecordName]), "",true, fun(A,Acc)-> [A|Acc] end, [])).
-all(R) -> filelib:fold_files(lists:concat(["data/",R]), "",true, fun(A,Acc)-> [A|Acc] end, []).
-next_id(RecordName, Incr) -> mnesia:dirty_update_counter({id_seq, RecordName}, Incr).
+all(R) -> lists:flatten([ begin case file:read_file(File) of
+                        {ok,Binary} -> binary_to_term(Binary,[safe]);
+                        {error,Reason} -> [] end end || File <-
+      filelib:fold_files(lists:concat(["data/",R]), "",true, fun(A,Acc)-> [A|Acc] end, []) ]).
+next_id(RecordName, Incr) -> store_mnesia:next_id(RecordName, Incr).
 create_table(Name,Options) -> filelib:ensure_dir(lists:concat(["data/",Name,"/"])).
 add_table_index(Record, Field) -> ok.
 

+ 0 - 1
src/store/store_kai.erl

@@ -10,7 +10,6 @@
 start() -> kai:start(), ok.
 stop() -> kai_store:stop(), ok.
 version() -> {version,"KVS KAI"}.
-join() -> initialize(), ok.
 join(_Node) -> initialize(), ok.
 initialize() -> ok.
 dir() -> [{table,T}||T<-kvs:modules()].

+ 1 - 1
src/store/store_mnesia.erl

@@ -10,7 +10,7 @@ stop()     -> mnesia:stop().
 destroy()  -> [mnesia:delete_table(T)||{_,T}<-kvs:dir()], mnesia:delete_schema([node()]), ok.
 version()  -> {version,"KVS MNESIA"}.
 dir()      -> [{table,T}||T<-mnesia:system_info(local_tables)].
-join()     -> mnesia:change_table_copy_type(schema, node(), disc_copies), initialize().
+join([])   -> mnesia:change_table_copy_type(schema, node(), disc_copies), initialize();
 join(Node) ->
     mnesia:change_config(extra_db_nodes, [Node]),
     mnesia:change_table_copy_type(schema, node(), kvs:config(kvs,mnesia_media,disc_copies)),

+ 2 - 3
src/store/store_redis.erl

@@ -6,16 +6,15 @@
 -include("metainfo.hrl").
 -compile(export_all).
 
-start() -> erase(eredis_pid), {ok,C}=eredis:start_link(), put(eredis_pid,C), ok.
+start() -> erase(eredis_pid), {ok,C}=eredis:start_link(), erlang:put(eredis_pid,C), ok.
 stop() -> P=erase(eredis_pid), eredis:stop(P), ok.
 c() -> case get(eredis_pid) of
     P when is_pid(P) ->
-        case is_process_alive(P) of true -> P; _ -> start(), get(eredis_pid) end;
+        case is_process_alive(P) of true -> P; _ -> start(), erlang:get(eredis_pid) end;
     _ -> start(), get(eredis_pid) end.
 destroy() -> ok.
 version() -> {version,"KVS REDIS"}.
 dir() -> [{table,T}||T<-kvs:modules()].
-join() -> initialize(), ok.
 join(_Node) -> initialize(), ok.
 change_storage(_Table,_Type) -> ok.
 initialize() -> ok.

+ 1 - 1
src/store/store_riak.erl

@@ -14,7 +14,7 @@
 start() -> ok.
 stop() -> ok.
 version() -> {version,"KVS RIAK 2.0.2"}.
-join() -> ok.
+join([]) -> ok;
 join(Ring) -> riak_core:join(Ring).
 initialize() -> riak:client_connect(node()).