summaryrefslogtreecommitdiff
path: root/src
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
commitaf973d1406b57a3790a6aef905c5de5b208beb80 (patch)
tree320d9d570e850a8f83d3f5d0bd0bcf5a5e0f074c /src
parentb39431bedc5a1bb2e247bab5372962296f284214 (diff)
downloadrabbitmq-server-git-af973d1406b57a3790a6aef905c5de5b208beb80.tar.gz
Allow binding:list_* to be invoked inside a tx meaningfully.
Diffstat (limited to 'src')
-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 2f71bfab63..5873537c75 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.