summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-02-11 14:30:02 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2011-02-11 14:30:02 +0000
commit7f003e72158bff73080e23173d58b0290df30b0c (patch)
treef4fb848a52bf45d6b197cf960183d99b1d87a814
parentcd012caed4385b393ad612aabc12107419e13e15 (diff)
downloadrabbitmq-server-7f003e72158bff73080e23173d58b0290df30b0c.tar.gz
Add ability to change backing module dynamically
-rw-r--r--src/gen_server2.erl16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl
index a637dddd..75d7ee8c 100644
--- a/src/gen_server2.erl
+++ b/src/gen_server2.erl
@@ -880,6 +880,22 @@ handle_common_reply(Reply, Msg, GS2State = #gs2_state { name = Name,
loop(GS2State #gs2_state { state = NState,
time = Time1,
debug = Debug1 });
+ {become, Mod, NState} ->
+ Debug1 = common_debug(Debug, fun print_event/3, Name,
+ {become, Mod, NState}),
+ loop(find_prioritisers(
+ GS2State #gs2_state { mod = Mod,
+ state = NState,
+ time = infinity,
+ debug = Debug1 }));
+ {become, Mod, NState, Time1} ->
+ Debug1 = common_debug(Debug, fun print_event/3, Name,
+ {become, Mod, NState}),
+ loop(find_prioritisers(
+ GS2State #gs2_state { mod = Mod,
+ state = NState,
+ time = Time1,
+ debug = Debug1 }));
_ ->
handle_common_termination(Reply, Msg, GS2State)
end.