summaryrefslogtreecommitdiff
path: root/src/rabbit_router.erl
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2010-09-29 15:41:54 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2010-09-29 15:41:54 +0100
commit2c3af402db90a169c6f9da5219d439b5707c19d0 (patch)
tree823c71f9590f77f8a211370dacf7515cdbc5a55d /src/rabbit_router.erl
parentf1f42f3fd28518b350cf398f8e85b01ba49755a7 (diff)
downloadrabbitmq-server-2c3af402db90a169c6f9da5219d439b5707c19d0.tar.gz
no more redundant message passing
Diffstat (limited to 'src/rabbit_router.erl')
-rw-r--r--src/rabbit_router.erl18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/rabbit_router.erl b/src/rabbit_router.erl
index e5ffe863..707698b0 100644
--- a/src/rabbit_router.erl
+++ b/src/rabbit_router.erl
@@ -58,8 +58,7 @@
%%----------------------------------------------------------------------------
deliver(QPids, Delivery = #delivery{mandatory = false,
- immediate = false,
- msg_seq_no = MsgSeqNo}) ->
+ immediate = false}) ->
%% optimisation: when Mandatory = false and Immediate = false,
%% rabbit_amqqueue:deliver will deliver the message to the queue
%% process asynchronously, and return true, which means all the
@@ -69,10 +68,9 @@ deliver(QPids, Delivery = #delivery{mandatory = false,
%% case below.
delegate:invoke_no_result(
QPids, fun (Pid) -> rabbit_amqqueue:deliver(Pid, Delivery) end),
- maybe_inform_channel(MsgSeqNo, QPids),
{routed, QPids};
-deliver(QPids, Delivery = #delivery{msg_seq_no = MsgSeqNo}) ->
+deliver(QPids, Delivery) ->
{Success, _} =
delegate:invoke(QPids,
fun (Pid) ->
@@ -82,11 +80,8 @@ deliver(QPids, Delivery = #delivery{msg_seq_no = MsgSeqNo}) ->
lists:foldl(fun fold_deliveries/2, {false, []}, Success),
case check_delivery(Delivery#delivery.mandatory, Delivery#delivery.immediate,
{Routed, Handled}) of
- {routed, Qs} ->
- maybe_inform_channel(MsgSeqNo, Qs),
- {routed, Qs};
- O ->
- O
+ {routed, Qs} -> {routed, Qs};
+ O -> O
end.
%% TODO: Maybe this should be handled by a cursor instead.
@@ -125,8 +120,3 @@ fold_deliveries({_, false},{_, Handled}) -> {true, Handled}.
check_delivery(true, _ , {false, []}) -> {unroutable, []};
check_delivery(_ , true, {_ , []}) -> {not_delivered, []};
check_delivery(_ , _ , {_ , Qs}) -> {routed, Qs}.
-
-maybe_inform_channel(undefined, _) ->
- ok;
-maybe_inform_channel(MsgSeqNo, QPids) ->
- gen_server2:cast(self(), {msg_sent_to_queues, MsgSeqNo, QPids}).