kvs_subscription.erl 887 B

1234567891011121314151617181920212223242526272829303132333435
  1. -module(kvs_subscription).
  2. %%-copyright('Synrc Research Center s.r.o.').
  3. -include_lib("kvs/include/subscription.hrl").
  4. -include_lib("kvs/include/metainfo.hrl").
  5. -export([
  6. metainfo/0,
  7. subscribe/2,
  8. unsubscribe/2,
  9. subscriptions/1,
  10. subscribed/1,
  11. subscribed/2
  12. ]).
  13. metainfo() ->
  14. #schema{name=kvs,tables=[
  15. #table{name=subscription,fields=record_info(fields,subscription),keys=[id,whom,who]}
  16. ]}.
  17. subscribe(Who, Whom) -> kvs:put(#subscription{key={Who,Whom},who = Who, whom = Whom}).
  18. unsubscribe(Who, Whom) ->
  19. case subscribed(Who, Whom) of
  20. true -> kvs:delete(subscription, {Who, Whom});
  21. false -> skip end.
  22. subscriptions(UId) -> kvs:index(subscription, who, UId).
  23. subscribed(Who) -> kvs:index(subscription, whom, Who).
  24. subscribed(Who, Whom) ->
  25. case kvs:get(subscription, {Who, Whom}) of
  26. {ok, _} -> true;
  27. _ -> false end.