summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2011-01-10 18:08:02 +0000
committerMatthias Radestock <matthias@rabbitmq.com>2011-01-10 18:08:02 +0000
commit3d3be3591c354e8045d49fc463a90eb4374b488a (patch)
treee3f47559ae49733b07a89b5ff2359a27d4640105
parent3b91ae8f57e5dfd838b8f5600685c28f3fc01ea0 (diff)
downloadrabbitmq-server-3d3be3591c354e8045d49fc463a90eb4374b488a.tar.gz
refactor: better function names, some inlining
-rw-r--r--src/rabbit_channel.erl44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index 57026259..6f82d521 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -464,33 +464,35 @@ confirm([], _QPid, State) ->
State;
confirm(_MsgSeqNos, _QPid, State = #ch{confirm_enabled = false}) ->
State;
-confirm(MsgSeqNos, QPid, State = #ch{unconfirmed = UC}) ->
- do_if_unconfirmed([MSN || MSN <- MsgSeqNos, gb_sets:is_element(MSN, UC)],
- QPid, State).
-
-do_if_unconfirmed(MsgSeqNos, undefined, State = #ch{unconfirmed = UC,
- queues_for_msg = QFM}) ->
+confirm(MsgSeqNos, undefined, State = #ch{unconfirmed = UC,
+ queues_for_msg = QFM}) ->
+ MsgSeqNos1 = [MSN || MSN <- MsgSeqNos, gb_sets:is_element(MSN, UC)],
MS = gb_sets:from_list(MsgSeqNos),
QFM1 = dict:filter(fun(M, _Q) -> not(gb_sets:is_element(M, MS)) end, QFM),
- flush_confirms(State#ch{unconfirmed = gb_sets:difference(UC, MS),
- queues_for_msg = QFM1}, MsgSeqNos);
-do_if_unconfirmed(MsgSeqNos, QPid, State) ->
+ send_confirms(MsgSeqNos1, State#ch{unconfirmed = gb_sets:difference(UC, MS),
+ queues_for_msg = QFM1});
+confirm(MsgSeqNos, QPid, State) ->
{DoneMessages, State1} =
lists:foldl(
fun(MsgSeqNo, {DMs, State0 = #ch{unconfirmed = UC0,
queues_for_msg = QFM0}}) ->
- {ok, Qs} = dict:find(MsgSeqNo, QFM0),
- Qs1 = sets:del_element(QPid, Qs),
- case sets:size(Qs1) of
- 0 -> {[MsgSeqNo | DMs],
- State0#ch{
- queues_for_msg = dict:erase(MsgSeqNo, QFM0),
- unconfirmed = gb_sets:delete(MsgSeqNo, UC0)}};
- _ -> QFM1 = dict:store(MsgSeqNo, Qs1, QFM0),
- {DMs, State0#ch{queues_for_msg = QFM1}}
+ case gb_sets:is_element(MsgSeqNo, UC0) of
+ false -> {DMs, State0};
+ true -> {ok, Qs} = dict:find(MsgSeqNo, QFM0),
+ Qs1 = sets:del_element(QPid, Qs),
+ case sets:size(Qs1) of
+ 0 -> {[MsgSeqNo | DMs],
+ State0#ch{
+ queues_for_msg =
+ dict:erase(MsgSeqNo, QFM0),
+ unconfirmed =
+ gb_sets:delete(MsgSeqNo, UC0)}};
+ _ -> QFM1 = dict:store(MsgSeqNo, Qs1, QFM0),
+ {DMs, State0#ch{queues_for_msg = QFM1}}
+ end
end
end, {[], State}, MsgSeqNos),
- flush_confirms(State1, DoneMessages).
+ send_confirms(DoneMessages, State1).
handle_method(#'channel.open'{}, _, State = #ch{state = starting}) ->
{reply, #'channel.open_ok'{}, State#ch{state = running}};
@@ -1223,9 +1225,9 @@ lock_message(true, MsgStruct, State = #ch{unacked_message_q = UAMQ}) ->
lock_message(false, _MsgStruct, State) ->
State.
-flush_confirms(State, []) ->
+send_confirms([], State) ->
State;
-flush_confirms(State = #ch{writer_pid = WriterPid, unconfirmed = UC}, Cs) ->
+send_confirms(Cs, State = #ch{writer_pid = WriterPid, unconfirmed = UC}) ->
SCs = lists:usort(Cs),
CutOff = case gb_sets:is_empty(UC) of
true -> lists:last(SCs) + 1;