summaryrefslogtreecommitdiff
path: root/src/gm.erl
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien.pedron@dumbbell.fr>2019-02-01 17:50:49 +0100
committerGitHub <noreply@github.com>2019-02-01 17:50:49 +0100
commited3dd4d6257df0925ce78ad94de099304346da4c (patch)
tree5467b45fdb1ce8b7e362519c10f724b7637e9ffd /src/gm.erl
parenta8bc2fc210130a8d989b7d7d877892466f2b802b (diff)
parent3562975dc1b59bf4d9ddde909a36c3c98127c575 (diff)
downloadrabbitmq-server-git-ed3dd4d6257df0925ce78ad94de099304346da4c.tar.gz
Merge pull request #1818 from rabbitmq/backward-compatible-amqqueue
Feature flags support + make #amqqueue{} private
Diffstat (limited to 'src/gm.erl')
-rw-r--r--src/gm.erl27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/gm.erl b/src/gm.erl
index 427fa78f4e..02ee76cd60 100644
--- a/src/gm.erl
+++ b/src/gm.erl
@@ -436,16 +436,6 @@
-type group_name() :: any().
-type txn_fun() :: fun((fun(() -> any())) -> any()).
--spec create_tables() -> 'ok' | {'aborted', any()}.
--spec start_link(group_name(), atom(), any(), txn_fun()) ->
- rabbit_types:ok_pid_or_error().
--spec leave(pid()) -> 'ok'.
--spec broadcast(pid(), any()) -> 'ok'.
--spec confirmed_broadcast(pid(), any()) -> 'ok'.
--spec info(pid()) -> rabbit_types:infos().
--spec validate_members(pid(), [pid()]) -> 'ok'.
--spec forget_group(group_name()) -> 'ok'.
-
%% The joined, members_changed and handle_msg callbacks can all return
%% any of the following terms:
%%
@@ -490,6 +480,8 @@
-callback handle_terminate(Args :: term(), Reason :: term()) ->
ok | term().
+-spec create_tables() -> 'ok' | {'aborted', any()}.
+
create_tables() ->
create_tables([?TABLE]).
@@ -506,27 +498,42 @@ table_definitions() ->
{Name, Attributes} = ?TABLE,
[{Name, [?TABLE_MATCH | Attributes]}].
+-spec start_link(group_name(), atom(), any(), txn_fun()) ->
+ rabbit_types:ok_pid_or_error().
+
start_link(GroupName, Module, Args, TxnFun) ->
gen_server2:start_link(?MODULE, [GroupName, Module, Args, TxnFun],
[{spawn_opt, [{fullsweep_after, 0}]}]).
+-spec leave(pid()) -> 'ok'.
+
leave(Server) ->
gen_server2:cast(Server, leave).
+-spec broadcast(pid(), any()) -> 'ok'.
+
broadcast(Server, Msg) -> broadcast(Server, Msg, 0).
broadcast(Server, Msg, SizeHint) ->
gen_server2:cast(Server, {broadcast, Msg, SizeHint}).
+-spec confirmed_broadcast(pid(), any()) -> 'ok'.
+
confirmed_broadcast(Server, Msg) ->
gen_server2:call(Server, {confirmed_broadcast, Msg}, infinity).
+-spec info(pid()) -> rabbit_types:infos().
+
info(Server) ->
gen_server2:call(Server, info, infinity).
+-spec validate_members(pid(), [pid()]) -> 'ok'.
+
validate_members(Server, Members) ->
gen_server2:cast(Server, {validate_members, Members}).
+-spec forget_group(group_name()) -> 'ok'.
+
forget_group(GroupName) ->
{atomic, ok} = mnesia:sync_transaction(
fun () ->