summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEmile Joubert <emile@lshift.net>2008-11-24 20:28:22 +0000
committerEmile Joubert <emile@lshift.net>2008-11-24 20:28:22 +0000
commit52e050de64fd366f3a306169a70d92288a15a065 (patch)
tree90beaa69993953dd6c510b8a35c50d7f3786d1fa /src
parent1699d89aeb2bd0134ee18f671e69fbf3eef0380b (diff)
parent7c50f0f937f93ad763f2621786d5dffdf9d36dff (diff)
downloadrabbitmq-server-git-52e050de64fd366f3a306169a70d92288a15a065.tar.gz
Merge bug18381 into bug19684, tidying
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_control.erl15
-rw-r--r--src/rabbit_reader.erl11
2 files changed, 18 insertions, 8 deletions
diff --git a/src/rabbit_control.erl b/src/rabbit_control.erl
index a3f582d7f6..d4906d8f1e 100644
--- a/src/rabbit_control.erl
+++ b/src/rabbit_control.erl
@@ -113,8 +113,9 @@ virtual host, exchange name, routing key, queue name and arguments, in that
order.
<ConnectioInfoItem> must be a member of the list [pid, address, port,
-peer_address, peer_port, state, channels, user, vhost, timeout, frame_max].
-The default is to display user, peer_address and peer_port.
+peer_address, peer_port, state, channels, user, vhost, timeout, frame_max,
+recv_oct, recv_cnt, send_oct, send_cnt, send_pend]. The default is to display
+user, peer_address and peer_port.
"),
halt(1).
@@ -218,8 +219,8 @@ action(list_bindings, Node, []) ->
fun({#resource{name = ExchangeName, virtual_host = VirtualHost},
#resource{name = QueueName, virtual_host = VirtualHost},
RoutingKey, Arguments}) ->
- io:format("~s ~s ~s ~s ~w~n",
- [VirtualHost, ExchangeName, RoutingKey, QueueName, Arguments])
+ io:format("~s@~s ~s ~s@~s ~w~n",
+ [ExchangeName, VirtualHost, RoutingKey, QueueName, VirtualHost, Arguments])
end,
rpc_call(Node, rabbit_exchange, list_bindings, [])),
ok;
@@ -244,10 +245,8 @@ display_info_list(Results, InfoItemArgs) when is_list(Results) ->
case Info of
{_, #resource{virtual_host = VHostPath, name = Name}} ->
io:format("~s@~s ", [Name, VHostPath]);
- {address, {A,B,C,D}} when is_integer(A), is_integer(B), is_integer(C), is_integer(D) ->
- io:format("~w.~w.~w.~w ", [A, B, C, D]);
- {peer_address, {A,B,C,D}} when is_integer(A), is_integer(B), is_integer(C), is_integer(D) ->
- io:format("~w.~w.~w.~w ", [A, B, C, D]);
+ {Key, IpAddress} when Key =:= address; Key =:= peer_address andalso is_tuple(IpAddress) ->
+ io:format("~s ", [inet_parse:ntoa(IpAddress)]);
_ when is_binary(Data) ->
io:format("~s ", [Data]);
_ ->
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index cbadaff2c6..da8651da8f 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -52,6 +52,7 @@
-define(INFO_KEYS,
[pid, address, port, peer_address, peer_port,
+ recv_oct, recv_cnt, send_oct, send_cnt, send_pend,
state, channels, user, vhost, timeout, frame_max]).
%% connection lifecycle
@@ -663,6 +664,16 @@ i(peer_address, #v1{sock = Sock}) ->
i(peer_port, #v1{sock = Sock}) ->
{ok, {_, P}} = inet:peername(Sock),
P;
+i(SockStat, #v1{sock = Sock}) when SockStat =:= recv_oct;
+ SockStat =:= recv_cnt;
+ SockStat =:= send_oct;
+ SockStat =:= send_cnt;
+ SockStat =:= send_pend ->
+ case inet:getstat(Sock, [SockStat]) of
+ {ok, [{SockStat, StatVal}]} -> StatVal;
+ {error, einval} -> undefined;
+ {error, Error} -> throw({cannot_get_socket_stats, Error})
+ end;
i(state, #v1{connection_state = S}) ->
S;
i(channels, #v1{}) ->