diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2010-09-04 04:53:53 +0100 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2010-09-04 04:53:53 +0100 |
commit | 726dec5e26dca42fd0eacd1b3f421e35d7a25684 (patch) | |
tree | 8d256c9176f969e812590201263f79451892d5a5 | |
parent | 19803f9e9d6b4dc4b32e564283b1afb40614e8a2 (diff) | |
download | rabbitmq-server-bug23228.tar.gz |
some renaming and inlining on internal APIbug23228
-rw-r--r-- | src/rabbit_binding.erl | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl index d5e19d31..3569ba93 100644 --- a/src/rabbit_binding.erl +++ b/src/rabbit_binding.erl @@ -287,7 +287,7 @@ remove_for_queue(QueueName, FwdDeleteFun) -> queue_name = QueueName, _ = '_'}}), write)], - Cleanup = cleanup_removed_queue_bindings( + Grouped = group_bindings_and_auto_delete( lists:keysort(#binding.exchange_name, DeletedBindings), []), fun () -> lists:foreach( @@ -297,30 +297,27 @@ remove_for_queue(QueueName, FwdDeleteFun) -> auto_deleted -> Module:delete(X, Bs); not_deleted -> Module:remove_bindings(X, Bs) end - end, Cleanup) + end, Grouped) end. %% Requires that its input binding list is sorted in exchange-name %% order, so that the grouping of bindings (for passing to -%% cleanup_removed_queue_bindings1) works properly. -cleanup_removed_queue_bindings([], Acc) -> +%% group_bindings_and_auto_delete1) works properly. +group_bindings_and_auto_delete([], Acc) -> Acc; -cleanup_removed_queue_bindings( +group_bindings_and_auto_delete( [B = #binding{exchange_name = ExchangeName} | Bs], Acc) -> - cleanup_removed_queue_bindings(ExchangeName, Bs, [B], Acc). + group_bindings_and_auto_delete(ExchangeName, Bs, [B], Acc). -cleanup_removed_queue_bindings( +group_bindings_and_auto_delete( ExchangeName, [B = #binding{exchange_name = ExchangeName} | Bs], Bindings, Acc) -> - cleanup_removed_queue_bindings(ExchangeName, Bs, [B | Bindings], Acc); -cleanup_removed_queue_bindings(ExchangeName, Removed, Bindings, Acc) -> + group_bindings_and_auto_delete(ExchangeName, Bs, [B | Bindings], Acc); +group_bindings_and_auto_delete(ExchangeName, Removed, Bindings, Acc) -> %% either Removed is [], or its head has a non-matching ExchangeName - NewAcc = [cleanup_removed_queue_bindings1(ExchangeName, Bindings) | Acc], - cleanup_removed_queue_bindings(Removed, NewAcc). - -cleanup_removed_queue_bindings1(ExchangeName, Bindings) -> [X] = mnesia:read({rabbit_exchange, ExchangeName}), - {{rabbit_exchange:maybe_auto_delete(X), X}, Bindings}. + NewAcc = [{{rabbit_exchange:maybe_auto_delete(X), X}, Bindings} | Acc], + group_bindings_and_auto_delete(Removed, NewAcc). delete_forward_routes(Route) -> ok = mnesia:delete_object(rabbit_route, Route, write), |