summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-04-04 16:24:02 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-04-04 16:24:02 +0100
commitdac6e4ba2648131f4d79f871536c3b79e16d17d9 (patch)
treec464b549ec212f30c19e0431e3703e70b6f08573
parent4776943d229918e892c4a3205671d2fc8b2a150f (diff)
downloadrabbitmq-server-dac6e4ba2648131f4d79f871536c3b79e16d17d9.tar.gz
Split up sync_binding.
-rw-r--r--src/rabbit_binding.erl23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 5f120547..508d19bf 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -100,10 +100,8 @@ recover(XNames, QNames) ->
XBs = rabbit_misc:table_fold(
fun (Route = #route{binding = B = #binding{source = Src}}, Acc) ->
case should_recover(B, XNameSet, QNameSet) of
- true -> {_, Rev} = route_with_reverse(Route),
- ok = mnesia:write(rabbit_route, Route, write),
- ok = mnesia:write(rabbit_reverse_route, Rev,
- write),
+ true -> ok = sync_transient_binding(
+ Route, fun mnesia:write/3),
rabbit_misc:dict_cons(Src, B, Acc);
false -> Acc
end
@@ -287,16 +285,17 @@ binding_action(Binding = #binding{source = SrcName,
Fun(Src, Dst, Binding#binding{args = SortedArgs})
end).
-sync_binding(Binding, Durable, Fun) ->
- ok = case Durable of
- true -> Fun(rabbit_durable_route,
- #route{binding = Binding}, write);
- false -> ok
- end,
+sync_binding(Binding, true, Fun) ->
+ ok = Fun(rabbit_durable_route, #route{binding = Binding}, write),
+ ok = sync_transient_binding(Binding, Fun);
+
+sync_binding(Binding, false, Fun) ->
+ ok = sync_transient_binding(Binding, Fun).
+
+sync_transient_binding(Binding, Fun) ->
{Route, ReverseRoute} = route_with_reverse(Binding),
ok = Fun(rabbit_route, Route, write),
- ok = Fun(rabbit_reverse_route, ReverseRoute, write),
- ok.
+ ok = Fun(rabbit_reverse_route, ReverseRoute, write).
call_with_source_and_destination(SrcName, DstName, Fun) ->
SrcTable = table_for_resource(SrcName),