summaryrefslogtreecommitdiff
path: root/src/rabbit_router.erl
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2010-09-22 17:36:03 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2010-09-22 17:36:03 +0100
commitbf8c6a276846cae5debe337d32d021d5cee5d3eb (patch)
tree72bed3fe9f99560c4fbec0c5ab218d924710bf4c /src/rabbit_router.erl
parent1c56ee01693c6db88469e455f41ec403195dbe4c (diff)
parent347ea71a8c20a8b76ccd753c4c4ab3fd30d5fb4d (diff)
downloadrabbitmq-server-bf8c6a276846cae5debe337d32d021d5cee5d3eb.tar.gz
merge default into bug20284
Diffstat (limited to 'src/rabbit_router.erl')
-rw-r--r--src/rabbit_router.erl16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/rabbit_router.erl b/src/rabbit_router.erl
index aaf3ae92..e5ffe863 100644
--- a/src/rabbit_router.erl
+++ b/src/rabbit_router.erl
@@ -33,9 +33,7 @@
-include_lib("stdlib/include/qlc.hrl").
-include("rabbit.hrl").
--export([deliver/2,
- match_bindings/2,
- match_routing_key/2]).
+-export([deliver/2, match_bindings/2, match_routing_key/2]).
%%----------------------------------------------------------------------------
@@ -45,9 +43,15 @@
-type(routing_key() :: binary()).
-type(routing_result() :: 'routed' | 'unroutable' | 'not_delivered').
+-type(qpids() :: [pid()]).
-spec(deliver/2 ::
- ([pid()], rabbit_types:delivery()) -> {routing_result(), [pid()]}).
+ (qpids(), rabbit_types:delivery()) -> {routing_result(), qpids()}).
+-spec(match_bindings/2 :: (rabbit_exchange:name(),
+ fun ((rabbit_types:binding()) -> boolean())) ->
+ qpids()).
+-spec(match_routing_key/2 :: (rabbit_exchange:name(), routing_key() | '_') ->
+ qpids()).
-endif.
@@ -89,10 +93,10 @@ deliver(QPids, Delivery = #delivery{msg_seq_no = MsgSeqNo}) ->
%% TODO: This causes a full scan for each entry with the same exchange
match_bindings(Name, Match) ->
Query = qlc:q([QName || #route{binding = Binding = #binding{
- exchange_name = ExchangeName,
+ exchange_name = XName,
queue_name = QName}} <-
mnesia:table(rabbit_route),
- ExchangeName == Name,
+ XName == Name,
Match(Binding)]),
lookup_qpids(mnesia:async_dirty(fun qlc:e/1, [Query])).