diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2011-04-04 16:24:02 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2011-04-04 16:24:02 +0100 |
commit | dac6e4ba2648131f4d79f871536c3b79e16d17d9 (patch) | |
tree | c464b549ec212f30c19e0431e3703e70b6f08573 | |
parent | 4776943d229918e892c4a3205671d2fc8b2a150f (diff) | |
download | rabbitmq-server-dac6e4ba2648131f4d79f871536c3b79e16d17d9.tar.gz |
Split up sync_binding.
-rw-r--r-- | src/rabbit_binding.erl | 23 |
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), |