git.ucc.asn.au
/
uccdoor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
initscript: added sample init.d script
[uccdoor.git]
/
server.py
diff --git
a/server.py
b/server.py
index
25e8ff8
..
64752f5
100755
(executable)
--- a/
server.py
+++ b/
server.py
@@
-11,6
+11,7
@@
import dbus, dbus.service
import gobject
from LATClient import LATClient
from select import select
import gobject
from LATClient import LATClient
from select import select
+from threading import Timer
def check_LAT_service(servicename, retries=3):
latclient = LATClient(service=servicename.upper())
def check_LAT_service(servicename, retries=3):
latclient = LATClient(service=servicename.upper())
@@
-56,8
+57,12
@@
class Door(dbus.service.Object):
object_path = '/au/asn/ucc/doors/%s' % doorname
dbus.service.Object.__init__(self, bus, object_path)
object_path = '/au/asn/ucc/doors/%s' % doorname
dbus.service.Object.__init__(self, bus, object_path)
- # get initial state
- self.poll()
+ # get initial state in a new thread
+ self.timeout = Timer(0, self.poll)
+ # daemon threads will be killed when the mainloop exits
+ # the timeout threads will inherit this value
+ self.timeout.setDaemon(True)
+ self.timeout.start()
def poll(self):
try:
def poll(self):
try:
@@
-71,7
+76,8
@@
class Door(dbus.service.Object):
self.status_changed(newstatus)
# set up timeout again
self.status_changed(newstatus)
# set up timeout again
- gobject.timeout_add_seconds(self.interval, self.poll)
+ self.timeout = Timer(self.interval, self.poll)
+ self.timeout.start()
@dbus.service.signal('au.asn.ucc.DoorInterface', signature='n')
def status_changed(self, newstatus):
@dbus.service.signal('au.asn.ucc.DoorInterface', signature='n')
def status_changed(self, newstatus):
@@
-83,6
+89,7
@@
class Door(dbus.service.Object):
return self.status
if __name__ == '__main__':
return self.status
if __name__ == '__main__':
+ gobject.threads_init()
doors = ('uccdoor', 'unisfadoor', 'chdoor', 'mrdoor', 'uccpir')
from dbus.mainloop.glib import DBusGMainLoop
doors = ('uccdoor', 'unisfadoor', 'chdoor', 'mrdoor', 'uccpir')
from dbus.mainloop.glib import DBusGMainLoop
UCC
git Repository :: git.ucc.asn.au