aboutsummaryrefslogtreecommitdiff
path: root/src/mod_pubsub/pubsub_subscription.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_pubsub/pubsub_subscription.erl')
-rw-r--r--src/mod_pubsub/pubsub_subscription.erl27
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(),