diff options
author | Matthew Sackman <matthew@rabbitmq.com> | 2010-09-10 17:48:58 +0100 |
---|---|---|
committer | Matthew Sackman <matthew@rabbitmq.com> | 2010-09-10 17:48:58 +0100 |
commit | 2e66c47c18ad703b889a692868ea6eb822f69d9c (patch) | |
tree | dc66cd5055f2ba482f86aac7b056b6ddb8b0702a /src/gen_server2.erl | |
parent | 7f2ba5f65e5d5a2b7dbd3b944f00abb3e8db70d4 (diff) | |
download | rabbitmq-server-2e66c47c18ad703b889a692868ea6eb822f69d9c.tar.gz |
When I wrote 'Please rewrite drain/2 to drain/1 - it's bizarre having both the state and the queue there when the queue is in the state anyway. Likewise, in/3 => in/2 - drop the explicit queue arg', this is what I meant
Diffstat (limited to 'src/gen_server2.erl')
-rw-r--r-- | src/gen_server2.erl | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl index c5801527..722af2e8 100644 --- a/src/gen_server2.erl +++ b/src/gen_server2.erl @@ -459,12 +459,12 @@ loop(GS2State = #gs2_state { time = hibernate, timeout_state = undefined }) -> pre_hibernate(GS2State); loop(GS2State) -> - process_next_msg(GS2State #gs2_state { queue = drain(GS2State) }). + process_next_msg(drain(GS2State)). -drain(GS2State = #gs2_state { queue = Queue }) -> +drain(GS2State) -> receive - Input -> drain(GS2State #gs2_state { queue = in(Input, GS2State) }) - after 0 -> Queue + Input -> drain(in(Input, GS2State)) + after 0 -> GS2State end. process_next_msg(GS2State = #gs2_state { time = Time, @@ -493,11 +493,7 @@ process_next_msg(GS2State = #gs2_state { time = Time, Input -> %% Time could be 'hibernate' here, so *don't* call loop process_next_msg( - GS2State #gs2_state { - queue = drain(GS2State #gs2_state { - queue = in(Input, - GS2State #gs2_state { - queue = Queue1 })})}) + drain(in(Input, GS2State #gs2_state { queue = Queue1 }))) after Time1 -> case HibOnTimeout of true -> @@ -517,8 +513,8 @@ wake_hib(GS2State = #gs2_state { timeout_state = TS }) -> {SleptAt, TimeoutState} -> adjust_timeout_state(SleptAt, now(), TimeoutState) end, - post_hibernate(GS2State #gs2_state { timeout_state = TimeoutState1, - queue = drain(GS2State) }). + post_hibernate( + drain(GS2State #gs2_state { timeout_state = TimeoutState1 })). hibernate(GS2State = #gs2_state { timeout_state = TimeoutState }) -> TS = case TimeoutState of @@ -586,12 +582,17 @@ adjust_timeout_state(SleptAt, AwokeAt, {backoff, CurrentTO, MinimumTO, in({'$gen_cast', Msg}, GS2State = #gs2_state { prioritise_cast = PC, queue = Queue }) -> - priority_queue:in({'$gen_cast', Msg}, PC(Msg, GS2State), Queue); + GS2State #gs2_state { queue = priority_queue:in( + {'$gen_cast', Msg}, + PC(Msg, GS2State), Queue) }; in({'$gen_call', From, Msg}, GS2State = #gs2_state { prioritise_call = PC, queue = Queue }) -> - priority_queue:in({'$gen_call', From, Msg}, PC(Msg, From, GS2State), Queue); + GS2State #gs2_state { queue = priority_queue:in( + {'$gen_call', From, Msg}, + PC(Msg, From, GS2State), Queue) }; in(Input, GS2State = #gs2_state { prioritise_info = PI, queue = Queue }) -> - priority_queue:in(Input, PI(Input, GS2State), Queue). + GS2State #gs2_state { queue = priority_queue:in( + Input, PI(Input, GS2State), Queue) }. process_msg(Msg, GS2State = #gs2_state { parent = Parent, |