summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2008-11-18 21:19:35 +0000
committerMatthias Radestock <matthias@lshift.net>2008-11-18 21:19:35 +0000
commit6ac77a9ec2f53357d84386c2266927c5e3b4174a (patch)
tree8ed1be8f76234a4a8aa0524a2b3fd233cb27012c
parent6a613d1278ddb85272c2ba647ed822c1cad10af9 (diff)
downloadrabbitmq-server-git-6ac77a9ec2f53357d84386c2266927c5e3b4174a.tar.gz
add rabbit_exchange:list_bindings/0
-rw-r--r--src/rabbit_exchange.erl13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index cc73f80c9f..273cf3d380 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -33,7 +33,7 @@
info/1, info/2, info_all/0, info_all/1,
simple_publish/6, simple_publish/3,
route/2]).
--export([add_binding/4, delete_binding/4]).
+-export([add_binding/4, delete_binding/4, list_bindings/0]).
-export([delete/2]).
-export([delete_bindings_for_queue/1]).
-export([check_type/1, assert_type/2, topic_matches/2]).
@@ -80,6 +80,8 @@
-spec(delete_binding/4 ::
(exchange_name(), queue_name(), routing_key(), amqp_table()) ->
bind_res() | {'error', 'binding_not_found'}).
+-spec(list_bindings/0 :: () ->
+ [{exchange_name(), queue_name(), routing_key(), amqp_table()}]).
-spec(delete_bindings_for_queue/1 :: (queue_name()) -> 'ok').
-spec(topic_matches/2 :: (binary(), binary()) -> bool()).
-spec(delete/2 :: (exchange_name(), bool()) ->
@@ -360,6 +362,15 @@ sync_binding(ExchangeName, QueueName, RoutingKey, Arguments, Durable, Fun) ->
R <- tuple_to_list(route_with_reverse(Binding))],
ok.
+list_bindings() ->
+ [{ExchangeName, QueueName, RoutingKey, Arguments} ||
+ #route{binding = #binding{
+ exchange_name = ExchangeName,
+ key = RoutingKey,
+ queue_name = QueueName,
+ args = Arguments}}
+ <- rabbit_misc:dirty_read_all(route)].
+
route_with_reverse(#route{binding = Binding}) ->
route_with_reverse(Binding);
route_with_reverse(Binding = #binding{}) ->