summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-03-16 11:19:17 +0000
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-03-16 11:19:17 +0000
commit157d3f401c729df060b32327385211b27a0e0105 (patch)
tree43aad0ca296ea6ff353836888d51a568c17dbe12
parentade1d061c1f3ac97a02324f121e8ac1b03311ff5 (diff)
downloadrabbitmq-server-157d3f401c729df060b32327385211b27a0e0105.tar.gz
refactor
-rw-r--r--src/rabbit_amqqueue_process.erl23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index 5dbc8828..96352c13 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -451,6 +451,9 @@ should_confirm_message(#delivery{sender = ChPid,
should_confirm_message(_Delivery, _State) ->
immediately.
+needs_confirming({eventually, _, _, _}) -> true;
+needs_confirming(_) -> false.
+
record_confirm_message({eventually, ChPid, MsgSeqNo, MsgId},
State = #q{msg_id_to_channel = MTC}) ->
State#q{msg_id_to_channel = dict:store(MsgId, {ChPid, MsgSeqNo}, MTC)};
@@ -483,15 +486,11 @@ attempt_delivery(#delivery{txn = none,
%% we don't need an expiry here because messages are
%% not being enqueued, so we use an empty
%% message_properties.
- NeedsConfirming = case Confirm of
- {eventually, _, _, _} -> true;
- _ -> false
- end,
{AckTag, BQS1} =
BQ:publish_delivered(
AckRequired, Message,
(?BASE_MESSAGE_PROPERTIES)#message_properties{
- needs_confirming = NeedsConfirming},
+ needs_confirming = needs_confirming(Confirm)},
BQS),
{{Message, false, AckTag}, true,
State1#q{backing_queue_state = BQS1}}
@@ -517,13 +516,9 @@ deliver_or_enqueue(Delivery, State) ->
{false, Confirm, State1 = #q{backing_queue = BQ,
backing_queue_state = BQS}} ->
#delivery{message = Message} = Delivery,
- NeedsConfirming = case Confirm of
- {eventually, _, _, _} -> true;
- _ -> false
- end,
BQS1 = BQ:publish(Message,
(message_properties(State)) #message_properties{
- needs_confirming = NeedsConfirming},
+ needs_confirming = needs_confirming(Confirm)},
BQS),
State2 = record_confirm_message(Confirm, State1),
ensure_ttl_timer(State2#q{backing_queue_state = BQS1})
@@ -849,11 +844,9 @@ handle_call({deliver_immediately, Delivery}, _From, State) ->
attempt_delivery(Delivery,
should_confirm_message(Delivery, State),
State),
- State2 = case {Confirm, Delivered} of
- {{eventually, _, _, _}, true} ->
- record_confirm_message(Confirm, State);
- _ ->
- State1
+ State2 = case Delivered andalso needs_confirming(Confirm) of
+ true -> record_confirm_message(Confirm, State);
+ false -> State1
end,
reply(Delivered, State2);