mirror of
https://github.com/moparisthebest/SickRage
synced 2024-12-13 11:32:20 -05:00
45 lines
1.0 KiB
Python
45 lines
1.0 KiB
Python
|
from threading import Thread
|
||
|
from Queue import Queue, Empty
|
||
|
from tornado.ioloop import IOLoop
|
||
|
|
||
|
class Event:
|
||
|
def __init__(self, type):
|
||
|
self._type = type
|
||
|
|
||
|
@property
|
||
|
def type(self):
|
||
|
return self._type
|
||
|
|
||
|
class Events(Thread):
|
||
|
def __init__(self, callback):
|
||
|
super(Events, self).__init__()
|
||
|
self.queue = Queue()
|
||
|
self.daemon = True
|
||
|
self.alive = True
|
||
|
self.callback = callback
|
||
|
self.name = "EVENT-QUEUE"
|
||
|
|
||
|
# auto-start
|
||
|
self.start()
|
||
|
|
||
|
def put(self, type):
|
||
|
self.queue.put_nowait(type)
|
||
|
|
||
|
def run(self):
|
||
|
while(self.alive):
|
||
|
try:
|
||
|
# get event type
|
||
|
type = self.queue.get(True, 1)
|
||
|
|
||
|
# perform callback if we got a event type
|
||
|
self.callback(type)
|
||
|
|
||
|
# event completed
|
||
|
self.queue.task_done()
|
||
|
except Empty:
|
||
|
type = None
|
||
|
|
||
|
# System Events
|
||
|
class SystemEvent(Event):
|
||
|
RESTART = "RESTART"
|
||
|
SHUTDOWN = "SHUTDOWN"
|