diff options
| author | Matthew Sackman <matthew@rabbitmq.com> | 2010-12-16 15:37:57 +0000 |
|---|---|---|
| committer | Matthew Sackman <matthew@rabbitmq.com> | 2010-12-16 15:37:57 +0000 |
| commit | 27c278c115a12f00034f44ee51f61e4ba3227403 (patch) | |
| tree | 6cef0603a6621360729f33c3e9efc3c581a1410e | |
| parent | 982603860aedd6fef441aae23d18ba24029734fc (diff) | |
| download | rabbitmq-server-git-27c278c115a12f00034f44ee51f61e4ba3227403.tar.gz | |
Make use of the wonderful new registry.
| -rw-r--r-- | src/gm.erl | 12 | ||||
| -rw-r--r-- | src/rabbit.erl | 13 | ||||
| -rw-r--r-- | src/rabbit_mnesia.erl | 20 | ||||
| -rw-r--r-- | src/rabbit_registry.erl | 3 |
4 files changed, 23 insertions, 25 deletions
diff --git a/src/gm.erl b/src/gm.erl index 47971bd4b3..d41b7a1ce6 100644 --- a/src/gm.erl +++ b/src/gm.erl @@ -372,6 +372,7 @@ -behaviour(gen_server2). +-behaviour(rabbit_mnesia). -export([create_tables/0, start_link/3, leave/1, broadcast/2, confirmed_broadcast/2, group_members/1]). @@ -381,7 +382,7 @@ -export([behaviour_info/1]). --export([add_to_rabbit_mnesia/0]). +-export([table_definitions/0]). -define(GROUP_TABLE, gm_group). -define(HIBERNATE_AFTER_MIN, 1000). @@ -413,7 +414,9 @@ -rabbit_boot_step({gm_tables, [{description, "add GM tables to rabbit_mnesia"}, - {mfa, {?MODULE, add_to_rabbit_mnesia, []}}, + {mfa, {rabbit_registry, register, + [mnesia, <<"gm">>, ?MODULE]}}, + {requires, rabbit_registry}, {enables, database}]}). -define(TAG, '$gm'). @@ -480,10 +483,9 @@ create_tables([{Table, Attributes} | Tables]) -> Err -> Err end. -add_to_rabbit_mnesia() -> +table_definitions() -> {Name, Attributes} = ?TABLE, - ok = rabbit_mnesia:add_table_definition( - {Name, [?TABLE_MATCH | Attributes]}). + [{Name, [?TABLE_MATCH | Attributes]}]. start_link(GroupName, Module, Args) -> gen_server2:start_link(?MODULE, [GroupName, Module, Args], []). diff --git a/src/rabbit.erl b/src/rabbit.erl index 2ebfdecf20..d46c62b6d9 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -51,6 +51,12 @@ []}}, {enables, external_infrastructure}]}). +-rabbit_boot_step({rabbit_registry, + [{description, "plugin registry"}, + {mfa, {rabbit_sup, start_child, + [rabbit_registry]}}, + {enables, external_infrastructure}]}). + -rabbit_boot_step({database, [{mfa, {rabbit_mnesia, init, []}}, {enables, external_infrastructure}]}). @@ -69,13 +75,6 @@ -rabbit_boot_step({external_infrastructure, [{description, "external infrastructure ready"}]}). --rabbit_boot_step({rabbit_registry, - [{description, "plugin registry"}, - {mfa, {rabbit_sup, start_child, - [rabbit_registry]}}, - {requires, external_infrastructure}, - {enables, kernel_ready}]}). - -rabbit_boot_step({rabbit_log, [{description, "logging server"}, {mfa, {rabbit_sup, start_restartable_child, diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index c97988d0f7..1d2c3640e5 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -34,11 +34,12 @@ -export([ensure_mnesia_dir/0, dir/0, status/0, init/0, is_db_empty/0, cluster/1, force_cluster/1, reset/0, force_reset/0, - is_clustered/0, empty_ram_only_tables/0, copy_db/1, - add_table_definition/1]). + is_clustered/0, empty_ram_only_tables/0, copy_db/1]). -export([table_names/0]). +-export([behaviour_info/1]). + %% create_tables/0 exported for helping embed RabbitMQ in or alongside %% other mnesia-using Erlang applications, such as ejabberd -export([create_tables/0]). @@ -72,6 +73,9 @@ %%---------------------------------------------------------------------------- +behaviour_info(callbacks) -> [{table_definitions, 0}]; +behaviour_info(_Other) -> undefined. + status() -> [{nodes, case mnesia:system_info(is_running) of yes -> [{Key, Nodes} || @@ -214,17 +218,9 @@ table_definitions() -> {match, #amqqueue{name = queue_name_match(), _='_'}}]}] ++ plugin_table_definitions(). -%% TODO: re-work this abuse of the application env as a register with -%% the generic registry that should be landing at some point. -add_table_definition(Def) -> - ok = application:set_env(rabbit, plugin_mnesia_tables, - [Def | plugin_table_definitions()], infinity). - plugin_table_definitions() -> - case application:get_env(rabbit, plugin_mnesia_tables) of - {ok, Defs} -> Defs; - undefined -> [] - end. + lists:append([Mod:table_definitions() + || {_Type, Mod} <- rabbit_registry:lookup_all(mnesia)]). binding_match() -> #binding{source = exchange_name_match(), diff --git a/src/rabbit_registry.erl b/src/rabbit_registry.erl index 7a3fcb51e5..935cf1d0fb 100644 --- a/src/rabbit_registry.erl +++ b/src/rabbit_registry.erl @@ -111,7 +111,8 @@ sanity_check_module(ClassModule, Module) -> end. class_module(exchange) -> rabbit_exchange_type; -class_module(auth_mechanism) -> rabbit_auth_mechanism. +class_module(auth_mechanism) -> rabbit_auth_mechanism; +class_module(mnesia) -> rabbit_mnesia. %%--------------------------------------------------------------------------- |
