diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-05-22 16:14:28 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-05-22 16:14:28 +0300 |
commit | d7878ef1316d68910c7e2a1b67476bc210f1bc45 (patch) | |
tree | 3a7dca70644916f9bac627a00c1e2789a2682436 /src/mod_announce_mnesia.erl | |
parent | Describe command arguments and results in mod_muc_admin (diff) |
Implement cache for mod_announce
Diffstat (limited to 'src/mod_announce_mnesia.erl')
-rw-r--r-- | src/mod_announce_mnesia.erl | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/mod_announce_mnesia.erl b/src/mod_announce_mnesia.erl index c298627e..f2e5c1c4 100644 --- a/src/mod_announce_mnesia.erl +++ b/src/mod_announce_mnesia.erl @@ -40,11 +40,11 @@ %%%=================================================================== init(_Host, _Opts) -> ejabberd_mnesia:create(?MODULE, motd, - [{disc_copies, [node()]}, + [{disc_only_copies, [node()]}, {attributes, record_info(fields, motd)}]), ejabberd_mnesia:create(?MODULE, motd_users, - [{disc_copies, [node()]}, + [{disc_only_copies, [node()]}, {attributes, record_info(fields, motd_users)}]). @@ -55,13 +55,13 @@ set_motd_users(_LServer, USRs) -> mnesia:write(#motd_users{us = {U, S}}) end, USRs) end, - mnesia:transaction(F). + transaction(F). set_motd(LServer, Packet) -> F = fun() -> mnesia:write(#motd{server = LServer, packet = Packet}) end, - mnesia:transaction(F). + transaction(F). delete_motd(LServer) -> F = fun() -> @@ -76,27 +76,27 @@ delete_motd(LServer) -> mnesia:delete({motd_users, US}) end, Users) end, - mnesia:transaction(F). + transaction(F). get_motd(LServer) -> case mnesia:dirty_read({motd, LServer}) of [#motd{packet = Packet}] -> {ok, Packet}; - _ -> + [] -> error end. is_motd_user(LUser, LServer) -> case mnesia:dirty_read({motd_users, {LUser, LServer}}) of - [#motd_users{}] -> true; - _ -> false + [#motd_users{}] -> {ok, true}; + _ -> {ok, false} end. set_motd_user(LUser, LServer) -> F = fun() -> mnesia:write(#motd_users{us = {LUser, LServer}}) end, - mnesia:transaction(F). + transaction(F). need_transform(#motd{server = S}) when is_list(S) -> ?INFO_MSG("Mnesia table 'motd' will be converted to binary", []), @@ -124,3 +124,11 @@ import(LServer, <<"motd">>, [LUser, <<>>, _TimeStamp]) -> %%%=================================================================== %%% Internal functions %%%=================================================================== +transaction(F) -> + case mnesia:transaction(F) of + {atomic, Res} -> + Res; + {aborted, Reason} -> + ?ERROR_MSG("Mnesia transaction failed: ~p", [Reason]), + {error, db_failure} + end. |