diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2013-12-12 12:42:05 +0000 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2013-12-12 12:42:05 +0000 |
| commit | bbc050e7877d06861f2af7b56cfe756780d57a54 (patch) | |
| tree | 8da451d1d248efb54de5aef686a7dd2149778ab3 | |
| parent | c9ce44150b1e787c041e33b21cba2ea968facc4c (diff) | |
| download | rabbitmq-server-git-bbc050e7877d06861f2af7b56cfe756780d57a54.tar.gz | |
refactor: take advantage of channel_count to simplify terminate_channels
| -rw-r--r-- | src/rabbit_reader.erl | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 64d5cf2a74..a41171a195 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -499,15 +499,13 @@ handle_dependent_exit(ChPid, Reason, State) -> maybe_close(control_throttle(State2)) end. -terminate_channels(State) -> - NChannels = - length([rabbit_channel:shutdown(ChPid) || ChPid <- all_channels()]), - if NChannels > 0 -> - Timeout = 1000 * ?CHANNEL_TERMINATION_TIMEOUT * NChannels, - TimerRef = erlang:send_after(Timeout, self(), cancel_wait), - wait_for_channel_termination(NChannels, TimerRef, State); - true -> State - end. +terminate_channels(#v1{channel_count = 0} = State) -> + State; +terminate_channels(#v1{channel_count = ChannelCount} = State) -> + lists:foreach(fun rabbit_channel:shutdown/1, all_channels()), + Timeout = 1000 * ?CHANNEL_TERMINATION_TIMEOUT * ChannelCount, + TimerRef = erlang:send_after(Timeout, self(), cancel_wait), + wait_for_channel_termination(ChannelCount, TimerRef, State). wait_for_channel_termination(0, TimerRef, _State) -> case erlang:cancel_timer(TimerRef) of |
