From 23f2939a49ebf6c08f6083a5aeb6b0f1f3caebf8 Mon Sep 17 00:00:00 2001
From: Matthias Radestock <matthias@rabbitmq.com>
Date: Fri, 12 Oct 2012 19:32:26 +0100
Subject: a spot of inlining ...and refactoring; exploiting the fact that
 maybe_record_confirm_message is a no-op when Confirm == never

---
 src/rabbit_amqqueue_process.erl | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

(limited to 'src')

diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index 9706efbf..5ee7ca9a 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -554,19 +554,20 @@ deliver_or_enqueue(Delivery = #delivery{message    = Message,
                    State) ->
     Confirm = should_confirm_message(Delivery, State),
     Props = message_properties(Confirm, Delivered, State),
-    case attempt_delivery(Delivery, Props, State) of
+    case attempt_delivery(Delivery, Props,
+                          maybe_record_confirm_message(Confirm, State)) of
         {true, State1} ->
-            maybe_record_confirm_message(Confirm, State1);
+            State1;
         %% the next one is an optimisations
-        %% TODO: optimise the Confirm =/= never case too
-        {false, State1 = #q{ttl = 0, dlx = undefined}} when Confirm == never ->
-            discard_delivery(Delivery, State1);
-        {false, State1} ->
-            State2 = #q{backing_queue = BQ, backing_queue_state = BQS} =
-                maybe_record_confirm_message(Confirm, State1),
+        {false, State1 = #q{ttl = 0, dlx = undefined,
+                            backing_queue = BQ, backing_queue_state = BQS}}
+          when Confirm == never ->
+            BQS1 = BQ:discard(Message, SenderPid, BQS),
+            State1#q{backing_queue_state = BQS1};
+        {false, State1 = #q{backing_queue = BQ, backing_queue_state = BQS}} ->
             BQS1 = BQ:publish(Message, Props, SenderPid, BQS),
             ensure_ttl_timer(Props#message_properties.expiry,
-                             State2#q{backing_queue_state = BQS1})
+                             State1#q{backing_queue_state = BQS1})
     end.
 
 requeue_and_run(AckTags, State = #q{backing_queue       = BQ,
@@ -683,12 +684,6 @@ subtract_acks(ChPid, AckTags, State, Fun) ->
             Fun(State)
     end.
 
-discard_delivery(#delivery{sender = SenderPid,
-                           message = Message},
-                 State = #q{backing_queue = BQ,
-                            backing_queue_state = BQS}) ->
-    State#q{backing_queue_state = BQ:discard(Message, SenderPid, BQS)}.
-
 message_properties(Confirm, Delivered, #q{ttl = TTL}) ->
     #message_properties{expiry           = calculate_msg_expiry(TTL),
                         needs_confirming = needs_confirming(Confirm),
-- 
cgit v1.2.1