Mercurial > code > home > repos > light9
comparison light8/dmxclient.py @ 198:238eede02bf9
supports using twisted/deferreds for the xmlrpc connection
author | drewp |
---|---|
date | Wed, 16 Jun 2004 13:01:18 +0000 |
parents | 79bc84310e80 |
children | 851cf44cea40 |
comparison
equal
deleted
inserted
replaced
197:ba2677823b35 | 198:238eede02bf9 |
---|---|
3 dmxclient.outputlevels(..) | 3 dmxclient.outputlevels(..) |
4 | 4 |
5 client id is formed from sys.argv[0] and the PID. """ | 5 client id is formed from sys.argv[0] and the PID. """ |
6 | 6 |
7 import xmlrpclib,os,sys,socket,time | 7 import xmlrpclib,os,sys,socket,time |
8 from twisted.web.xmlrpc import Proxy | |
8 _dmx=None | 9 _dmx=None |
9 | 10 |
10 _id="%s-%s" % (sys.argv[0].replace('.py','').replace('./',''),os.getpid()) | 11 _id="%s-%s" % (sys.argv[0].replace('.py','').replace('./',''),os.getpid()) |
11 | 12 |
12 def outputlevels(levellist): | 13 def outputlevels(levellist,twisted=0): |
13 """present a list of dmx channel levels, each scaled from | 14 """present a list of dmx channel levels, each scaled from |
14 0..1. list can be any length- it will apply to the first len() dmx | 15 0..1. list can be any length- it will apply to the first len() dmx |
15 channels. | 16 channels. |
16 | 17 |
17 if the server is not found, outputlevels will block for a | 18 if the server is not found, outputlevels will block for a |
19 | 20 |
20 global _dmx,_id | 21 global _dmx,_id |
21 | 22 |
22 if _dmx is None: | 23 if _dmx is None: |
23 host = os.getenv('DMXHOST', 'localhost') | 24 host = os.getenv('DMXHOST', 'localhost') |
24 _dmx=xmlrpclib.Server("http://%s:8030" % host) | 25 url = "http://%s:8030" % host |
26 if not twisted: | |
27 _dmx=xmlrpclib.Server(url) | |
28 else: | |
29 _dmx = Proxy(url) | |
25 | 30 |
26 try: | 31 if not twisted: |
27 _dmx.outputlevels(_id,levellist) | 32 try: |
28 except socket.error,e: | 33 _dmx.outputlevels(_id,levellist) |
29 print "dmx server error %s, waiting"%e | 34 except socket.error,e: |
30 time.sleep(1) | 35 print "dmx server error %s, waiting"%e |
31 except xmlrpclib.Fault,e: | 36 time.sleep(1) |
32 print "outputlevels had xml fault: %s" % e | 37 except xmlrpclib.Fault,e: |
33 time.sleep(1) | 38 print "outputlevels had xml fault: %s" % e |
39 time.sleep(1) | |
40 else: | |
41 def err(error): | |
42 print "dmx server error",error | |
43 time.sleep(1) | |
44 d = _dmx.callRemote('outputlevels',_id,levellist) | |
45 d.addErrback(err) | |
46 | |
34 | 47 |
35 dummy = os.getenv('DMXDUMMY') | 48 dummy = os.getenv('DMXDUMMY') |
36 if dummy: | 49 if dummy: |
37 print "dmxclient: DMX is in dummy mode." | 50 print "dmxclient: DMX is in dummy mode." |
38 def bogus(*args): | 51 def bogus(*args): |