diff options
Diffstat (limited to 'src/mod_pubsub/pubsub_subscription.erl')
-rw-r--r-- | src/mod_pubsub/pubsub_subscription.erl | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/mod_pubsub/pubsub_subscription.erl b/src/mod_pubsub/pubsub_subscription.erl index e41acc518..535b37428 100644 --- a/src/mod_pubsub/pubsub_subscription.erl +++ b/src/mod_pubsub/pubsub_subscription.erl @@ -95,6 +95,7 @@ subscribe_node(JID, NodeID, Options) -> case catch mnesia:sync_dirty(fun add_subscription/3, [JID, NodeID, Options]) of {'EXIT', {aborted, Error}} -> Error; + {error, Error} -> {error, Error}; Result -> {result, Result} end. @@ -102,6 +103,7 @@ unsubscribe_node(JID, NodeID, SubID) -> case catch mnesia:sync_dirty(fun delete_subscription/3, [JID, NodeID, SubID]) of {'EXIT', {aborted, Error}} -> Error; + {error, Error} -> {error, Error}; Result -> {result, Result} end. @@ -109,6 +111,7 @@ get_subscription(JID, NodeID, SubID) -> case catch mnesia:sync_dirty(fun read_subscription/3, [JID, NodeID, SubID]) of {'EXIT', {aborted, Error}} -> Error; + {error, Error} -> {error, Error}; Result -> {result, Result} end. @@ -116,6 +119,7 @@ set_subscription(JID, NodeID, SubID, Options) -> case catch mnesia:sync_dirty(fun write_subscription/4, [JID, NodeID, SubID, Options]) of {'EXIT', {aborted, Error}} -> Error; + {error, Error} -> {error, Error}; Result -> {result, Result} end. @@ -160,26 +164,23 @@ create_table() -> add_subscription(_JID, _NodeID, Options) -> SubID = make_subid(), - Record = #pubsub_subscription{subid = SubID, options = Options}, - mnesia:write(Record), + mnesia:write(#pubsub_subscription{subid = SubID, options = Options}), SubID. -delete_subscription(JID, NodeID, SubID) -> - Sub = read_subscription(JID, NodeID, SubID), - mnesia:delete({pubsub_subscription, SubID}), - Sub. +delete_subscription(_JID, _NodeID, SubID) -> + mnesia:delete({pubsub_subscription, SubID}). read_subscription(_JID, _NodeID, SubID) -> - Q = qlc:q([Sub || Sub <- mnesia:table(pubsub_subscription), - Sub#pubsub_subscription.subid == SubID]), - case qlc:e(Q) of - [Sub] -> Sub; - [] -> mnesia:abort({error, notfound}) + case mnesia:read({pubsub_subscription, SubID}) of + [Sub] -> Sub; + _ -> {error, notfound} end. write_subscription(JID, NodeID, SubID, Options) -> - Sub = read_subscription(JID, NodeID, SubID), - mnesia:write(Sub#pubsub_subscription{options = Options}). + case read_subscription(JID, NodeID, SubID) of + {error, notfound} -> {error, notfound}; + Sub -> mnesia:write(Sub#pubsub_subscription{options = Options}) + end. make_subid() -> {T1, T2, T3} = now(), |