# HG changeset patch # User Edouard Tisserant # Date 1423175551 -3600 # Node ID a68cd425325943e4adad323c07731738b563d4ea # Parent 19ebe96b41c0226c3a0dac49531c5cd215ef83e7 Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails. diff -r 19ebe96b41c0 -r a68cd4253259 Beremiz_service.py --- a/Beremiz_service.py Thu Feb 05 01:35:02 2015 +0100 +++ b/Beremiz_service.py Thu Feb 05 23:32:31 2015 +0100 @@ -36,13 +36,15 @@ -a - autostart PLC (0:disable 1:enable) (default:0) -x - enable/disable wxTaskbarIcon (0:disable 1:enable) (default:1) -t - enable/disable Twisted web interface (0:disable 1:enable) (default:1) + -w - web server port or "off" (default:8009) + -c - WAMP client config file or "off" (default:wampconf.json) -e - python extension (absolute path .py) working_dir - directory where are stored PLC files """%sys.argv[0] try: - opts, argv = getopt.getopt(sys.argv[1:], "i:p:n:x:t:a:e:h") + opts, argv = getopt.getopt(sys.argv[1:], "i:p:n:x:t:a:w:c:e:h") except getopt.GetoptError, err: # print help information and exit: print str(err) # will print something like "option -a not recognized" @@ -52,6 +54,8 @@ # default values given_ip = None port = 3000 +webport = 8009 +wampconf = "wampconf.json" servicename = None autostart = False enablewx = True @@ -82,6 +86,10 @@ enabletwisted = int(a) elif o == "-a": autostart = int(a) + elif o == "-w": + webport = None if a == "off" else int(a) + elif o == "-c": + wampconf = None if a == "off" else a elif o == "-e": extensions.append(a) else: @@ -433,15 +441,23 @@ if havewx: reactor.registerWxApp(app) - # TODO add command line switch - try: - import runtime.NevowServer as NS - website = NS.RegisterWebsite(reactor) - pyruntimevars["website"] = website - statuschange.append(NS.website_statuslistener_factory(website)) - except: - print "Nevow Web service failed." - + if webport is not None : + try: + import runtime.NevowServer as NS + website = NS.RegisterWebsite(webport) + pyruntimevars["website"] = website + statuschange.append(NS.website_statuslistener_factory(website)) + except Exception, e: + print "Nevow Web service failed.", e + + if wampconf is not None : + try: + import runtime.WampClient as WC + WC.RegisterWampClient(wampconf) + pyruntimevars["wampsession"] = WC.GetSession + registerserverto.append(WC.SetServer) + except Exception, e: + print "WAMP client startup failed.", e if havewx: from threading import Semaphore diff -r 19ebe96b41c0 -r a68cd4253259 runtime/NevowServer.py --- a/runtime/NevowServer.py Thu Feb 05 01:35:02 2015 +0100 +++ b/runtime/NevowServer.py Thu Feb 05 23:32:31 2015 +0100 @@ -2,6 +2,7 @@ from nevow import rend, appserver, inevow, tags, loaders, athena from nevow.page import renderer from twisted.python import util +from twisted.internet import reactor xhtml_header = ''' + + + diff -r 19ebe96b41c0 -r a68cd4253259 tests/wamp/plc.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/wamp/plc.xml Thu Feb 05 23:32:31 2015 +0100 @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PyVar0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LocalVar0 + + + + + + + + + + + PyVar1 + + + + + + + + + + + + + + + + + + diff -r 19ebe96b41c0 -r a68cd4253259 tests/wamp/py_ext_0@py_ext/baseconfnode.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/wamp/py_ext_0@py_ext/baseconfnode.xml Thu Feb 05 23:32:31 2015 +0100 @@ -0,0 +1,2 @@ + + diff -r 19ebe96b41c0 -r a68cd4253259 tests/wamp/py_ext_0@py_ext/pyfile.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/wamp/py_ext_0@py_ext/pyfile.xml Thu Feb 05 23:32:31 2015 +0100 @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +