#!/usr/bin/env python2
#
# present statistics from dabmux Stats Server
# to munin

import sys
import json
import socket
import os

SOCK_RECV_SIZE=10240

def connect():
    """Create a connection to the dabmux stats server

    returns: the socket"""

    sock = socket.socket()
    sock.connect(("localhost", 12720))

    version = json.loads(sock.recv(SOCK_RECV_SIZE))

    if not version['service'].startswith("ODR-DabMux"):
        sys.stderr.write("Wrong version\n")
        sys.exit(1)

    return sock

if len(sys.argv) == 1:
    sock = connect()
    sock.send("values\n")
    values = json.loads(sock.recv(SOCK_RECV_SIZE))['values']

    tmpl = "{ident:20}{maxfill:>8}{minfill:>8}{under:>8}{over:>8}{peakleft:>8}{peakright:>8}"
    print(tmpl.format(
	ident="id",
	maxfill="max",
	minfill="min",
	under="under",
	over="over",
        peakleft="peak L",
        peakright="peak R"))

    for ident in values:
        v = values[ident]['inputstat']
        print(tmpl.format(
            ident=ident,
            maxfill=v['max_fill'],
            minfill=v['min_fill'],
            under=v['num_underruns'],
            over=v['num_overruns'],
            peakleft=v['peak_left'],
            peakright=v['peak_right']))


elif len(sys.argv) == 2 and sys.argv[1] == "config":
    sock = connect()

    sock.send("config\n")

    config = json.loads(sock.recv(SOCK_RECV_SIZE))

    print(config['config'])