changeset 198:238eede02bf9

supports using twisted/deferreds for the xmlrpc connection
author drewp
date Wed, 16 Jun 2004 13:01:18 +0000
parents ba2677823b35
children cde2ae379be0
files light8/dmxclient.py
diffstat 1 files changed, 23 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/light8/dmxclient.py	Wed Jun 16 13:00:11 2004 +0000
+++ b/light8/dmxclient.py	Wed Jun 16 13:01:18 2004 +0000
@@ -5,11 +5,12 @@
 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 @@
 
     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: