summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-07-27 13:12:11 +0100
committerMatthew Sackman <matthew@rabbitmq.com>2011-07-27 13:12:11 +0100
commit8b59064f8d092871fa3ca504a1bdaf58830e1e01 (patch)
treebb0083dc36727e3d538b565813a994b460a263f5
parent873fbc8c8c910a847834ae869a89a19d5074e21f (diff)
downloadrabbitmq-server-bug24288.tar.gz
General improvementsbug24288
-rw-r--r--src/gen_server2.erl22
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.