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):