summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_exchange_type_direct.erl7
-rw-r--r--src/rabbit_exchange_type_fanout.erl7
-rw-r--r--src/rabbit_exchange_type_headers.erl7
-rw-r--r--src/rabbit_exchange_type_registry.erl7
-rw-r--r--src/rabbit_exchange_type_topic.erl7
5 files changed, 28 insertions, 7 deletions
diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl
index d944e06f7a..68d36e7ebe 100644
--- a/src/rabbit_exchange_type_direct.erl
+++ b/src/rabbit_exchange_type_direct.erl
@@ -38,6 +38,13 @@
-export([validate/1, create/1, recover/2, delete/2, add_binding/2, delete_binding/2]).
-include("rabbit_exchange_type_spec.hrl").
+-rabbit_boot_step({?MODULE,
+ [{description, "exchange type direct"},
+ {mfa, {rabbit_exchange_type_registry, register,
+ [<<"direct">>, ?MODULE]}},
+ {requires, rabbit_exchange_type_registry},
+ {enables, kernel_ready}]}).
+
description() ->
[{name, <<"direct">>},
{description, <<"AMQP direct exchange, as per the AMQP specification">>}].
diff --git a/src/rabbit_exchange_type_fanout.erl b/src/rabbit_exchange_type_fanout.erl
index 770619734a..60fd73d5c1 100644
--- a/src/rabbit_exchange_type_fanout.erl
+++ b/src/rabbit_exchange_type_fanout.erl
@@ -38,6 +38,13 @@
-export([validate/1, create/1, recover/2, delete/2, add_binding/2, delete_binding/2]).
-include("rabbit_exchange_type_spec.hrl").
+-rabbit_boot_step({?MODULE,
+ [{description, "exchange type fanout"},
+ {mfa, {rabbit_exchange_type_registry, register,
+ [<<"fanout">>, ?MODULE]}},
+ {requires, rabbit_exchange_type_registry},
+ {enables, kernel_ready}]}).
+
description() ->
[{name, <<"fanout">>},
{description, <<"AMQP fanout exchange, as per the AMQP specification">>}].
diff --git a/src/rabbit_exchange_type_headers.erl b/src/rabbit_exchange_type_headers.erl
index 4afaf388b8..0aa2b96243 100644
--- a/src/rabbit_exchange_type_headers.erl
+++ b/src/rabbit_exchange_type_headers.erl
@@ -39,6 +39,13 @@
-export([validate/1, create/1, recover/2, delete/2, add_binding/2, delete_binding/2]).
-include("rabbit_exchange_type_spec.hrl").
+-rabbit_boot_step({?MODULE,
+ [{description, "exchange type headers"},
+ {mfa, {rabbit_exchange_type_registry, register,
+ [<<"headers">>, ?MODULE]}},
+ {requires, rabbit_exchange_type_registry},
+ {enables, kernel_ready}]}).
+
-ifdef(use_specs).
-spec(headers_match/2 :: (amqp_table(), amqp_table()) -> boolean()).
-endif.
diff --git a/src/rabbit_exchange_type_registry.erl b/src/rabbit_exchange_type_registry.erl
index 11da75d183..722a926e9f 100644
--- a/src/rabbit_exchange_type_registry.erl
+++ b/src/rabbit_exchange_type_registry.erl
@@ -77,13 +77,6 @@ internal_register(TypeName, ModuleName)
init([]) ->
?ETS_NAME = ets:new(?ETS_NAME, [protected, set, named_table]),
-
- %% TODO: split out into separate boot startup steps.
- ok = internal_register(<<"direct">>, rabbit_exchange_type_direct),
- ok = internal_register(<<"fanout">>, rabbit_exchange_type_fanout),
- ok = internal_register(<<"headers">>, rabbit_exchange_type_headers),
- ok = internal_register(<<"topic">>, rabbit_exchange_type_topic),
-
{ok, none}.
handle_call({register, TypeName, ModuleName}, _From, State) ->
diff --git a/src/rabbit_exchange_type_topic.erl b/src/rabbit_exchange_type_topic.erl
index d64243374e..5080b3c916 100644
--- a/src/rabbit_exchange_type_topic.erl
+++ b/src/rabbit_exchange_type_topic.erl
@@ -38,6 +38,13 @@
-export([validate/1, create/1, recover/2, delete/2, add_binding/2, delete_binding/2]).
-include("rabbit_exchange_type_spec.hrl").
+-rabbit_boot_step({?MODULE,
+ [{description, "exchange type topic"},
+ {mfa, {rabbit_exchange_type_registry, register,
+ [<<"topic">>, ?MODULE]}},
+ {requires, rabbit_exchange_type_registry},
+ {enables, kernel_ready}]}).
+
-export([topic_matches/2]).
-ifdef(use_specs).