summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@novemberain.com>2016-06-02 16:32:39 +0300
committerMichael Klishin <michael@novemberain.com>2016-06-02 16:32:39 +0300
commit1c3f4540969f22da3c9564e3c9de70f3b2fba240 (patch)
tree5b0f637bf06d912a14d7fe01e0eef0276d9ab588 /src
parent45641a62675b1b67b01a5db76056a7d22de68175 (diff)
parentf2a8427b7d44f6de633cfe6abaccee9dc06710a1 (diff)
downloadrabbitmq-server-git-1c3f4540969f22da3c9564e3c9de70f3b2fba240.tar.gz
Merge pull request #754 from rabbitmq/rabbitmq-delayed-message-exchange-3
Support for type-specific exchange info
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_exchange.erl12
-rw-r--r--src/rabbit_exchange_type_direct.erl4
-rw-r--r--src/rabbit_exchange_type_fanout.erl4
-rw-r--r--src/rabbit_exchange_type_headers.erl4
-rw-r--r--src/rabbit_exchange_type_invalid.erl4
-rw-r--r--src/rabbit_exchange_type_topic.erl4
6 files changed, 29 insertions, 3 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 2e9afbfd2e..5d646e0c90 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -346,11 +346,17 @@ i(policy, X) -> case rabbit_policy:name(X) of
none -> '';
Policy -> Policy
end;
-i(Item, _) -> throw({bad_argument, Item}).
+i(Item, #exchange{type = Type} = X) ->
+ case (type_to_module(Type)):info(X, [Item]) of
+ [{Item, I}] -> I;
+ [] -> throw({bad_argument, Item})
+ end.
-info(X = #exchange{}) -> infos(?INFO_KEYS, X).
+info(X = #exchange{type = Type}) ->
+ infos(?INFO_KEYS, X) ++ (type_to_module(Type)):info(X).
-info(X = #exchange{}, Items) -> infos(Items, X).
+info(X = #exchange{type = _Type}, Items) ->
+ infos(Items, X).
info_all(VHostPath) -> map(VHostPath, fun (X) -> info(X) end).
diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl
index 8a6886e376..ed675b572a 100644
--- a/src/rabbit_exchange_type_direct.erl
+++ b/src/rabbit_exchange_type_direct.erl
@@ -23,6 +23,7 @@
-export([validate/1, validate_binding/2,
create/2, delete/3, policy_changed/2, add_binding/3,
remove_bindings/3, assert_args_equivalence/2]).
+-export([info/1, info/2]).
-rabbit_boot_step({?MODULE,
[{description, "exchange type direct"},
@@ -31,6 +32,9 @@
{requires, rabbit_registry},
{enables, kernel_ready}]}).
+info(_X) -> [].
+info(_X, _) -> [].
+
description() ->
[{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 d81e407f8f..3aebc07b41 100644
--- a/src/rabbit_exchange_type_fanout.erl
+++ b/src/rabbit_exchange_type_fanout.erl
@@ -23,6 +23,7 @@
-export([validate/1, validate_binding/2,
create/2, delete/3, policy_changed/2, add_binding/3,
remove_bindings/3, assert_args_equivalence/2]).
+-export([info/1, info/2]).
-rabbit_boot_step({?MODULE,
[{description, "exchange type fanout"},
@@ -31,6 +32,9 @@
{requires, rabbit_registry},
{enables, kernel_ready}]}).
+info(_X) -> [].
+info(_X, _) -> [].
+
description() ->
[{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 fe344ba86e..69b3db4d65 100644
--- a/src/rabbit_exchange_type_headers.erl
+++ b/src/rabbit_exchange_type_headers.erl
@@ -24,6 +24,7 @@
-export([validate/1, validate_binding/2,
create/2, delete/3, policy_changed/2, add_binding/3,
remove_bindings/3, assert_args_equivalence/2]).
+-export([info/1, info/2]).
-rabbit_boot_step({?MODULE,
[{description, "exchange type headers"},
@@ -37,6 +38,9 @@
rabbit_framing:amqp_table()) -> boolean()).
-endif.
+info(_X) -> [].
+info(_X, _) -> [].
+
description() ->
[{description, <<"AMQP headers exchange, as per the AMQP specification">>}].
diff --git a/src/rabbit_exchange_type_invalid.erl b/src/rabbit_exchange_type_invalid.erl
index c8ca7ecae4..b2e2798e3a 100644
--- a/src/rabbit_exchange_type_invalid.erl
+++ b/src/rabbit_exchange_type_invalid.erl
@@ -23,6 +23,10 @@
-export([validate/1, validate_binding/2,
create/2, delete/3, policy_changed/2, add_binding/3,
remove_bindings/3, assert_args_equivalence/2]).
+-export([info/1, info/2]).
+
+info(_X) -> [].
+info(_X, _) -> [].
description() ->
[{description,
diff --git a/src/rabbit_exchange_type_topic.erl b/src/rabbit_exchange_type_topic.erl
index 0eccb66cfd..60be070426 100644
--- a/src/rabbit_exchange_type_topic.erl
+++ b/src/rabbit_exchange_type_topic.erl
@@ -24,6 +24,7 @@
-export([validate/1, validate_binding/2,
create/2, delete/3, policy_changed/2, add_binding/3,
remove_bindings/3, assert_args_equivalence/2]).
+-export([info/1, info/2]).
-rabbit_boot_step({?MODULE,
[{description, "exchange type topic"},
@@ -34,6 +35,9 @@
%%----------------------------------------------------------------------------
+info(_X) -> [].
+info(_X, _) -> [].
+
description() ->
[{description, <<"AMQP topic exchange, as per the AMQP specification">>}].