-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworkermanager.py
52 lines (41 loc) · 1.47 KB
/
workermanager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/user/bin/python
from datetime import datetime
import threading
import traceback
import Queue
from constants import MessageCodes
from constants import MessageTypes
from constants import Statuses
class WorkerManager(object):
lastLoggedStatus = None
lastLoggedStatusMessage = ''
statusMessage = ''
sensorQueue = None
gpioOutputQueue = None
def __init__(self, name, outQueue):
self.statusTime = datetime.now()
self.queue = Queue.Queue()
self.worker = name(self.queue, outQueue)
self.name = self.worker.__class__.__name__
self.friendlyName = self.worker.friendlyname()
self.handlesRequests = self.worker.HANDLES_REQUESTS
self.program = ''
def start(self, sensorQueue = None, gpioOutputQueue = None):
self.worker.sensorQueue = sensorQueue
self.worker.gpioOutputQueue = gpioOutputQueue
self.worker.start()
self.status = Statuses.UNDEFINED
def handlesrequests(self):
return self.handlesRequests
def requeststatus(self):
self.queue.put({MessageCodes.CODE:MessageTypes.STATUS_REQUEST})
def terminate(self):
#print "Terminate request for " + self.name
self.queue.put({MessageCodes.CODE:MessageTypes.TERMINATE})
def relay(self, request):
self.queue.put(request)
def join(self):
#print "Joining " + self.name
self.worker.join()
def isalive(self):
return self.worker.is_alive()