1
2
3
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#!/usr/bin/env python
#
# present statistics from dabmux Stats Server
# to standard output.
#
# If you are looking for munin integration, use
# ODR-DabMux/doc/stats_dabmux_multi.py
import sys
import json
import zmq
import os
ctx = zmq.Context()
def connect():
"""Create a connection to the dabmux stats server
returns: the socket"""
sock = zmq.Socket(ctx, zmq.REQ)
sock.connect("tcp://localhost:12720")
sock.send(b"info")
infojson = json.loads(sock.recv())
sys.stderr.write("Statistics from ODR-DabMux {}\n".format(infojson['version']))
if not infojson['service'].startswith("ODR-DabMux"):
sys.stderr.write("This is not ODR-DabMux: {}\n".format(infojson['service']))
sys.exit(1)
return sock
if len(sys.argv) == 1:
sock = connect()
sock.send(b"values")
poller = zmq.Poller()
poller.register(sock, zmq.POLLIN)
socks = dict(poller.poll(1000))
if socks:
if socks.get(sock) == zmq.POLLIN:
data = sock.recv()
values = json.loads(data)['values']
tmpl = "{ident:20}{maxfill:>8}{minfill:>8}{under:>8}{over:>8}{audioleft:>8}{audioright:>8}{peakleft:>8}{peakright:>8}{state:>16}{version:>48}{uptime:>8}"
print(tmpl.format(
ident="id",
maxfill="max",
minfill="min",
under="under",
over="over",
audioleft="audio L",
audioright="audio R",
peakleft="peak L",
peakright="peak R",
state="state",
version="version",
uptime="uptime"))
for ident in values:
v = values[ident]['inputstat']
if 'state' not in v:
v['state'] = None
if 'version' not in v:
v['version'] = "Unknown"
if 'uptime' not in v:
v['uptime'] = "?"
print(tmpl.format(
ident=ident,
maxfill=v['max_fill'],
minfill=v['min_fill'],
under=v['num_underruns'],
over=v['num_overruns'],
audioleft=v['peak_left'],
audioright=v['peak_right'],
peakleft=v['peak_left_slow'],
peakright=v['peak_right_slow'],
state=v['state'],
version=v['version'],
uptime=v['uptime']))
elif len(sys.argv) == 2 and sys.argv[1] == "config":
sock = connect()
sock.send(b"config")
config = json.loads(sock.recv())
print(config['config'])
|