4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/nats/server/connz.rb', line 4
def call(env)
c_info = Server.dump_connections
qs = env['QUERY_STRING']
if (qs =~ /n=(\d+)/)
sort_key = :pending_size
n = $1.to_i
if (qs =~ /s=(\S+)/)
case $1.downcase
when 'in_msgs'; sort_key = :in_msgs
when 'msgs_from'; sort_key = :in_msgs
when 'out_msgs'; sort_key = :out_msgs
when 'msgs_to'; sort_key = :out_msgs
when 'in_bytes'; sort_key = :in_bytes
when 'bytes_from'; sort_key = :in_bytes
when 'out_bytes'; sort_key = :out_bytes
when 'bytes_to'; sort_key = :out_bytes
when 'subs'; sort_key = :subscriptions
when 'subscriptions'; sort_key = :subscriptions
end
end
conns = c_info[:connections]
c_info[:connections] = conns.sort { |a,b| b[sort_key] <=> a[sort_key] } [0, n]
end
connz_json = JSON.pretty_generate(c_info) + "\n"
hdrs = RACK_JSON_HDR.dup
hdrs['Content-Length'] = connz_json.bytesize.to_s
[200, hdrs, connz_json]
end
|