diff options
| author | Ben Hood <0x6e6562@gmail.com> | 2008-09-30 01:11:39 +0100 |
|---|---|---|
| committer | Ben Hood <0x6e6562@gmail.com> | 2008-09-30 01:11:39 +0100 |
| commit | 8f08a5b5476394d42e96ec66dbfbf857cdc3a679 (patch) | |
| tree | 76cda4ab477a286290e1831a1c74a8ecbe348b9c /src | |
| parent | ee89d942a635695c5d7a1eae8836afb5308307a1 (diff) | |
| download | rabbitmq-server-git-8f08a5b5476394d42e96ec66dbfbf857cdc3a679.tar.gz | |
Simplications
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_exchange.erl | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index f7c52682e8..6280b3a74b 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -151,11 +151,6 @@ list_vhost_exchanges(VHostPath) -> mnesia:dirty_match_object( #exchange{name = rabbit_misc:r(VHostPath, exchange), _ = '_'}). -routes_for_exchange(Name) -> - qlc:e(qlc:q([R || R = #route{binding = #binding{exchange_name = N}} - <- mnesia:table(route), - N == Name])). - %% Usable by Erlang code that wants to publish messages. simple_publish(Mandatory, Immediate, ExchangeName, RoutingKeyBin, ContentTypeBin, BodyBin) -> @@ -250,6 +245,12 @@ exchanges_for_queue(QueueName) -> key = '_'}}, mnesia:dirty_select(route, [{MatchHead, [], ['$1']}]). +routes_for_exchange(ExchangeName) -> + MatchHead = #route{binding = #binding{exchange_name = ExchangeName, + queue_name = '_', + key = '$1'}}, + mnesia:dirty_select(route, [{MatchHead, [], ['$1']}]). + call_with_exchange_and_queue(Exchange, Queue, Fun) -> rabbit_misc:execute_mnesia_transaction( fun () -> @@ -357,8 +358,7 @@ delete(ExchangeName, IfUnused) -> fun () -> internal_delete(ExchangeName, IfUnused) end). internal_delete(ExchangeName, _IfUnused = true) -> - Routes = routes_for_exchange(ExchangeName), - case Routes of + case routes_for_exchange(ExchangeName) of [] -> do_internal_delete(ExchangeName); _ -> {error, in_use} end; @@ -366,8 +366,6 @@ internal_delete(ExchangeName, _IfUnused = true) -> internal_delete(ExchangeName, false) -> do_internal_delete(ExchangeName). -%% TODO: Don't know if iterating over a list in process memory is cool -%% Maybe we should iterate over the DB cursor? do_internal_delete(ExchangeName) -> case mnesia:wread({exchange, ExchangeName}) of [] -> {error, not_found}; |
