diff options
author | Matthew Sackman <matthew@rabbitmq.com> | 2011-07-27 13:12:11 +0100 |
---|---|---|
committer | Matthew Sackman <matthew@rabbitmq.com> | 2011-07-27 13:12:11 +0100 |
commit | 8b59064f8d092871fa3ca504a1bdaf58830e1e01 (patch) | |
tree | bb0083dc36727e3d538b565813a994b460a263f5 | |
parent | 873fbc8c8c910a847834ae869a89a19d5074e21f (diff) | |
download | rabbitmq-server-bug24288.tar.gz |
General improvementsbug24288
-rw-r--r-- | src/gen_server2.erl | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl index 5bf28477..60471181 100644 --- a/src/gen_server2.erl +++ b/src/gen_server2.erl @@ -1166,10 +1166,10 @@ format_status(Opt, StatusData) -> end, Header = lists:concat(["Status for generic server ", NameTag]), Log = sys:get_debug(log, Debug, []), - Specfic = callback_format_status(Opt, Mod, format_status, [PDict, State], - [{data, [{"State", State}]}]), - Messages = callback_format_status(Opt, Mod, format_message_queue, Queue, - priority_queue:to_list(Queue)), + Specfic = callback(Mod, format_status, [Opt, [PDict, State]], + fun () -> [{data, [{"State", State}]}] end), + Messages = callback(Mod, format_message_queue, [Opt, Queue], + fun () -> priority_queue:to_list(Queue) end), [{header, Header}, {data, [{"Status", SysState}, {"Parent", Parent}, @@ -1177,11 +1177,11 @@ format_status(Opt, StatusData) -> {"Queued messages", Messages}]} | Specfic]. -callback_format_status(Opt, Mod, FunName, Args, Default) -> - case erlang:function_exported(Mod, FunName, 2) of - true -> case catch Mod:FunName(Opt, Args) of - {'EXIT', _} -> Default; - Else -> Else - end; - _ -> Default +callback(Mod, FunName, Args, DefaultThunk) -> + case erlang:function_exported(Mod, FunName, length(Args)) of + true -> case catch apply(Mod, FunName, Args) of + {'EXIT', _} -> DefaultThunk(); + Success -> Success + end; + false -> DefaultThunk() end. |