diff --git a/light8/dmxclient.py b/light8/dmxclient.py --- a/light8/dmxclient.py +++ b/light8/dmxclient.py @@ -5,11 +5,12 @@ dmxclient.outputlevels(..) client id is formed from sys.argv[0] and the PID. """ import xmlrpclib,os,sys,socket,time +from twisted.web.xmlrpc import Proxy _dmx=None _id="%s-%s" % (sys.argv[0].replace('.py','').replace('./',''),os.getpid()) -def outputlevels(levellist): +def outputlevels(levellist,twisted=0): """present a list of dmx channel levels, each scaled from 0..1. list can be any length- it will apply to the first len() dmx channels. @@ -21,16 +22,28 @@ def outputlevels(levellist): if _dmx is None: host = os.getenv('DMXHOST', 'localhost') - _dmx=xmlrpclib.Server("http://%s:8030" % host) + url = "http://%s:8030" % host + if not twisted: + _dmx=xmlrpclib.Server(url) + else: + _dmx = Proxy(url) - try: - _dmx.outputlevels(_id,levellist) - except socket.error,e: - print "dmx server error %s, waiting"%e - time.sleep(1) - except xmlrpclib.Fault,e: - print "outputlevels had xml fault: %s" % e - time.sleep(1) + if not twisted: + try: + _dmx.outputlevels(_id,levellist) + except socket.error,e: + print "dmx server error %s, waiting"%e + time.sleep(1) + except xmlrpclib.Fault,e: + print "outputlevels had xml fault: %s" % e + time.sleep(1) + else: + def err(error): + print "dmx server error",error + time.sleep(1) + d = _dmx.callRemote('outputlevels',_id,levellist) + d.addErrback(err) + dummy = os.getenv('DMXDUMMY') if dummy: