diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2011-04-13 14:48:25 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2011-04-13 14:48:25 +0100 |
commit | 054a16a7a73e9fce43959b353a7eb842dd3faab3 (patch) | |
tree | 2bbdb0366e53bf2561042caa3f8fd70ea98151ce | |
parent | a58a73ddb279c0a9f0adcc7228bf3f739f2a5d54 (diff) | |
download | rabbitmq-server-054a16a7a73e9fce43959b353a7eb842dd3faab3.tar.gz |
Simpler remove_for_source.
-rw-r--r-- | src/rabbit_binding.erl | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl index 57c766c7..1cb642a7 100644 --- a/src/rabbit_binding.erl +++ b/src/rabbit_binding.erl @@ -243,21 +243,16 @@ has_for_source(SrcName) -> contains(rabbit_semi_durable_route, Match). remove_for_source(SrcName) -> + Match = #route{binding = #binding{source = SrcName, _ = '_'}}, + Routes = lists:usort( + mnesia:match_object(rabbit_route, Match, write) ++ + mnesia:match_object(rabbit_durable_route, Match, write)), [begin ok = mnesia:delete_object(rabbit_reverse_route, reverse_route(Route), write), ok = delete_forward_routes(Route), Route#route.binding - end || Route <- sets:to_list( - sets:union( - [sets:from_list(routes_for_source(SrcName, T)) || - T <- [rabbit_route, rabbit_semi_durable_route, - rabbit_durable_route]]))]. - -routes_for_source(SrcName, Table) -> - mnesia:match_object(Table, #route{binding = #binding{source = SrcName, - _ = '_'}}, - write). + end || Route <- Routes]. remove_for_destination(DstName) -> remove_for_destination(DstName, fun delete_forward_routes/1). |