Merge pull request #1034 from JackDandy/feature/FixEvents

Fix Events shutdown (a manual start-up is required after updating to this fix).
This commit is contained in:
JackDandy 2018-01-04 19:41:13 +00:00 committed by GitHub
commit 8094a64e35
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 13 deletions

View file

@ -5,6 +5,8 @@
[develop changelog]
* Fix Events shutdown (a manual start-up is required after updating to this fix)
### 0.13.9 (2018-01-02 15:45:00 UTC)

View file

@ -2,44 +2,49 @@ from lib.six import moves
import threading
class Event:
def __init__(self, type):
self._type = type
def __init__(self, etype):
self._type = etype
@property
def type(self):
return self._type
class Events(threading.Thread):
def __init__(self, callback):
super(Events, self).__init__()
self.queue = moves.queue.Queue()
self.daemon = True
self.callback = callback
self.name = "EVENT-QUEUE"
self.stop = threading.Event()
self.name = 'EVENT-QUEUE'
self._stop = threading.Event()
def put(self, type):
self.queue.put(type)
def put(self, etype):
self.queue.put(etype)
def stop(self):
self._stop.set()
def run(self):
while (not self.stop.is_set()):
while not self._stop.is_set():
try:
# get event type
type = self.queue.get(True, 1)
etype = self.queue.get(True, 1)
# perform callback if we got a event type
self.callback(type)
self.callback(etype)
# event completed
self.queue.task_done()
except moves.queue.Empty:
type = None
pass
# exiting thread
self.stop.clear()
self._stop.clear()
# System Events
class SystemEvent(Event):
RESTART = "RESTART"
SHUTDOWN = "SHUTDOWN"
RESTART = 'RESTART'
SHUTDOWN = 'SHUTDOWN'