summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-09-17 13:43:12 +0100
committerSimon MacMullen <simon@rabbitmq.com>2010-09-17 13:43:12 +0100
commit9fa93047396f8e443e32de8f514738dc64f205c1 (patch)
treed2fd85a2303d4ce4b3f443fbc0b3e0ab789a64c9
parentd84707cc4e8a269d84dedf6afe1288b3d63152fa (diff)
downloadrabbitmq-server-git-9fa93047396f8e443e32de8f514738dc64f205c1.tar.gz
Don't throw, don't use erlang:element/2.
-rw-r--r--src/rabbit_reader.erl25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index 1a77de0a82..2db219c7f6 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -808,14 +808,14 @@ infos(Items, State) -> [{Item, i(Item, State)} || Item <- Items].
i(pid, #v1{}) ->
self();
-i(address, State = #v1{sock = Sock}) ->
- socket_info(1, fun rabbit_net:sockname/1, State);
-i(port, State = #v1{sock = Sock}) ->
- socket_info(2, fun rabbit_net:sockname/1, State);
-i(peer_address, State = #v1{sock = Sock}) ->
- socket_info(1, fun rabbit_net:peername/1, State);
-i(peer_port, State = #v1{sock = Sock}) ->
- socket_info(2, fun rabbit_net:peername/1, State);
+i(address, #v1{sock = Sock}) ->
+ socket_info(fun rabbit_net:sockname/1, fun ({A, _}) -> A end, Sock);
+i(port, #v1{sock = Sock}) ->
+ socket_info(fun rabbit_net:sockname/1, fun ({_, P}) -> P end, Sock);
+i(peer_address, #v1{sock = Sock}) ->
+ socket_info(fun rabbit_net:peername/1, fun ({A, _}) -> A end, Sock);
+i(peer_port, #v1{sock = Sock}) ->
+ socket_info(fun rabbit_net:peername/1, fun ({_, P}) -> P end, Sock);
i(SockStat, #v1{sock = Sock}) when SockStat =:= recv_oct;
SockStat =:= recv_cnt;
SockStat =:= send_oct;
@@ -850,11 +850,10 @@ i(client_properties, #v1{connection = #connection{
i(Item, #v1{}) ->
throw({bad_argument, Item}).
-socket_info(I, Fun, State = #v1 {sock = Sock}) ->
- case {Fun(Sock), ?IS_RUNNING(State)} of
- {{ok, T}, _} -> element(I, T);
- {{error, E}, true} -> throw({cannot_get_socket_stats, E});
- {{error, E}, false} -> E
+socket_info(Get, Select, Sock) ->
+ case Get(Sock) of
+ {ok, T} -> Select(T);
+ {error, _} -> ''
end.
%%--------------------------------------------------------------------------