summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@lshift.net>2008-11-20 20:29:26 +0000
committerEmile Joubert <emile@lshift.net>2008-11-20 20:29:26 +0000
commit7cec7c133b200dad670c9884b9efac106a9f22cc (patch)
treeca99385784733cce2317494c0dc41b382cdd47c4
parentc5c1bd721935c6bda4189cc2bcd100817c3c2eee (diff)
parent8c0969ec73efbffd31a4d4196447d545ad1da2ac (diff)
downloadrabbitmq-server-7cec7c133b200dad670c9884b9efac106a9f22cc.tar.gz
Merged bug18381 into bug19684
-rw-r--r--src/rabbit_exchange.erl13
-rw-r--r--src/rabbit_networking.erl8
2 files changed, 19 insertions, 2 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index cc73f80c..273cf3d3 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{}) ->
diff --git a/src/rabbit_networking.erl b/src/rabbit_networking.erl
index 79c927cb..9fc34503 100644
--- a/src/rabbit_networking.erl
+++ b/src/rabbit_networking.erl
@@ -26,7 +26,8 @@
-module(rabbit_networking).
-export([start/0, start_tcp_listener/2, stop_tcp_listener/2,
- on_node_down/1, active_listeners/0, node_listeners/1]).
+ on_node_down/1, active_listeners/0, node_listeners/1,
+ connections/0]).
%%used by TCP-based transports, e.g. STOMP adapter
-export([check_tcp_listener_address/3]).
@@ -46,6 +47,7 @@
-spec(stop_tcp_listener/2 :: (host(), ip_port()) -> 'ok').
-spec(active_listeners/0 :: () -> [listener()]).
-spec(node_listeners/1 :: (node()) -> [listener()]).
+-spec(connections/0 :: () -> [pid()]).
-spec(on_node_down/1 :: (node()) -> 'ok').
-spec(check_tcp_listener_address/3 :: (atom(), host(), ip_port()) ->
{ip_address(), atom()}).
@@ -136,6 +138,10 @@ start_client(Sock) ->
Child ! {go, Sock},
Child.
+connections() ->
+ [Pid || {_, Pid, _, _} <- supervisor:which_children(
+ rabbit_tcp_client_sup)].
+
%%--------------------------------------------------------------------
tcp_host({0,0,0,0}) ->