diff options
author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-09-22 17:36:03 +0100 |
---|---|---|
committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-09-22 17:36:03 +0100 |
commit | bf8c6a276846cae5debe337d32d021d5cee5d3eb (patch) | |
tree | 72bed3fe9f99560c4fbec0c5ab218d924710bf4c /src/rabbit_router.erl | |
parent | 1c56ee01693c6db88469e455f41ec403195dbe4c (diff) | |
parent | 347ea71a8c20a8b76ccd753c4c4ab3fd30d5fb4d (diff) | |
download | rabbitmq-server-bf8c6a276846cae5debe337d32d021d5cee5d3eb.tar.gz |
merge default into bug20284
Diffstat (limited to 'src/rabbit_router.erl')
-rw-r--r-- | src/rabbit_router.erl | 16 |
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])). |