summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-05-31 15:51:34 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-05-31 15:51:34 +0100
commitafe7b305578972e05de2f487b783aa6df33baebb (patch)
tree320d9d570e850a8f83d3f5d0bd0bcf5a5e0f074c
parentc46dc531aff9ceb0a0b213c736975d5e2fded14d (diff)
downloadrabbitmq-server-afe7b305578972e05de2f487b783aa6df33baebb.tar.gz
Allow binding:list_* to be invoked inside a tx meaningfully.
-rw-r--r--src/rabbit_binding.erl35
1 files changed, 23 insertions, 12 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 2f71bfab..5873537c 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -198,22 +198,33 @@ list(VHostPath) ->
Route)].
list_for_source(SrcName) ->
- Route = #route{binding = #binding{source = SrcName, _ = '_'}},
- [B || #route{binding = B} <- mnesia:dirty_match_object(rabbit_route,
- Route)].
+ mnesia:async_dirty(
+ fun() ->
+ Route = #route{binding = #binding{source = SrcName, _ = '_'}},
+ [B || #route{binding = B}
+ <- mnesia:match_object(rabbit_route, Route, read)]
+ end).
list_for_destination(DstName) ->
- Route = #route{binding = #binding{destination = DstName, _ = '_'}},
- [reverse_binding(B) || #reverse_route{reverse_binding = B} <-
- mnesia:dirty_match_object(rabbit_reverse_route,
- reverse_route(Route))].
+ mnesia:async_dirty(
+ fun() ->
+ Route = #route{binding = #binding{destination = DstName,
+ _ = '_'}},
+ [reverse_binding(B) ||
+ #reverse_route{reverse_binding = B} <-
+ mnesia:match_object(rabbit_reverse_route,
+ reverse_route(Route), read)]
+ end).
list_for_source_and_destination(SrcName, DstName) ->
- Route = #route{binding = #binding{source = SrcName,
- destination = DstName,
- _ = '_'}},
- [B || #route{binding = B} <- mnesia:dirty_match_object(rabbit_route,
- Route)].
+ mnesia:async_dirty(
+ fun() ->
+ Route = #route{binding = #binding{source = SrcName,
+ destination = DstName,
+ _ = '_'}},
+ [B || #route{binding = B} <- mnesia:match_object(rabbit_route,
+ Route, read)]
+ end).
info_keys() -> ?INFO_KEYS.