#!/usr/bin/python

import gevent
from gevent import monkey
monkey.patch_all()

from nmosregistration.registryaggregatorservice import RegistryAggregatorService

import argparse
import sys
import json
import os

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Registry Aggregator")
    parser.add_argument('--interactive', dest='interactive', default=None, type=int, metavar="PORT",
                        help="Load up in interactive mode on given port (useful for debugging)")
    parser.add_argument('--pidfile', dest='pidfile', default='/var/run/nmos-node/nmosregistration.pid',
                        help="Pid file for the daemon")


    args = parser.parse_args()

    service = RegistryAggregatorService(interactive=args.interactive)
    service_greenlet = gevent.spawn(service.run)

    if args.interactive is not None:
        from gevent.backdoor import BackdoorServer
        import signal
        import time

        api     = service.httpServer.api

        backdoor = BackdoorServer(('127.0.0.1', args.interactive), locals=locals(), banner="""\
Registry Aggregator in interactive mode
========================================
Prepopulated variables:
    api     : an AggregatorAPI object
Exit this console by pressing ^D to quit.""")

        bdgl = gevent.spawn(backdoor.serve_forever)

        service_greenlet.join()

    else:
        try:
            f = open(args.pidfile, 'w')
        except:
            print "Could not open pid file, continuing"
        else:
            pid = os.getpid()
            f.write(str(pid)+"\n")
            f.flush()
            f.close()

        service_greenlet.join()

        try:
            os.remove(args.pidfile)
        except:
            pass
