diff options
author | Ben Hood <0x6e6562@gmail.com> | 2008-10-13 18:58:20 +0100 |
---|---|---|
committer | Ben Hood <0x6e6562@gmail.com> | 2008-10-13 18:58:20 +0100 |
commit | 88a8e55e6f2685d6c23f3ba53ea96c498404434d (patch) | |
tree | fae2bf1ee07e87a3985411a9c6b35355fc76bc30 | |
parent | 14fd2f2fc46b92b625a5a843b1411f7247a81085 (diff) | |
download | rabbitmq-server-88a8e55e6f2685d6c23f3ba53ea96c498404434d.tar.gz |
Added wilcards to every argument field in binding record
-rw-r--r-- | src/rabbit_exchange.erl | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index 808cf8ae..2dcaf791 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -208,7 +208,8 @@ route(X = #exchange{type = direct}, RoutingKey) -> route_internal(#exchange{name = Name}, RoutingKey) -> MatchHead = #route{binding = #binding{exchange_name = Name, queue_name = '$1', - key = RoutingKey}}, + key = RoutingKey, + args = '_'}}, lookup_qpids(mnesia:dirty_select(route, [{MatchHead, [], ['$1']}])). lookup_qpids(Queues) -> @@ -226,7 +227,8 @@ delete_bindings_for_exchange(ExchangeName) -> indexed_delete( #route{binding = #binding{exchange_name = ExchangeName, queue_name = '_', - key = '_'}}, + key = '_', + args = '_'}}, fun delete_forward_routes/1, fun mnesia:delete_object/1). delete_bindings_for_queue(QueueName) -> @@ -234,7 +236,8 @@ delete_bindings_for_queue(QueueName) -> indexed_delete( reverse_route(#route{binding = #binding{exchange_name = '_', queue_name = QueueName, - key = '_'}}), + key = '_', + args = '_'}}), fun mnesia:delete_object/1, fun delete_forward_routes/1), [begin [X] = mnesia:read({exchange, ExchangeName}), @@ -257,7 +260,8 @@ exchanges_for_queue(QueueName) -> MatchHead = reverse_route( #route{binding = #binding{exchange_name = '$1', queue_name = QueueName, - key = '_'}}), + key = '_', + args = '_'}}), sets:to_list( sets:from_list( mnesia:select(reverse_route, [{MatchHead, [], ['$1']}]))). @@ -265,7 +269,8 @@ exchanges_for_queue(QueueName) -> has_bindings(ExchangeName) -> MatchHead = #route{binding = #binding{exchange_name = ExchangeName, queue_name = '$1', - key = '_'}}, + key = '_', + args = '_'}}, continue(mnesia:select(route, [{MatchHead, [], ['$1']}], 1, read)). continue('$end_of_table') -> false; @@ -338,17 +343,21 @@ reverse_route(#reverse_route{reverse_binding = Binding}) -> reverse_binding(#reverse_binding{exchange_name = Exchange, queue_name = Queue, - key = Key}) -> + key = Key, + args = Args}) -> #binding{exchange_name = Exchange, queue_name = Queue, - key = Key}; + key = Key, + args = Args}; reverse_binding(#binding{exchange_name = Exchange, queue_name = Queue, - key = Key}) -> + key = Key, + args = Args}) -> #reverse_binding{exchange_name = Exchange, queue_name = Queue, - key = Key}. + key = Key, + args = Args}. split_topic_key(Key) -> {ok, KeySplit} = regexp:split(binary_to_list(Key), "\\."), @@ -409,9 +418,10 @@ unconditional_delete(#exchange{name = ExchangeName}) -> list_exchange_bindings(ExchangeName) -> Route = #route{binding = #binding{exchange_name = ExchangeName, queue_name = '_', - key = '_'}}, - [{QueueName, RoutingKey, Args} || + key = '_', + args = '_'}}, + [{QueueName, RoutingKey, Arguments} || #route{binding = #binding{queue_name = QueueName, key = RoutingKey, - args = Args}} + args = Arguments}} <- mnesia:dirty_match_object(Route)]. |