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 | d89965a28f6a66128d4f7e42c812d08604140fc9 (patch) | |
| tree | bb0083dc36727e3d538b565813a994b460a263f5 /src | |
| parent | 6db4fa05544a03474c1a75d32ea5608e182abc75 (diff) | |
| download | rabbitmq-server-git-d89965a28f6a66128d4f7e42c812d08604140fc9.tar.gz | |
General improvements
Diffstat (limited to 'src')
| -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 5bf28477c2..6047118126 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. |
