mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Use a callback instead of a queue for results from the worker, makes for easier integration with signals
This commit is contained in:
parent
e2c6d4e5c0
commit
b34f4d34d0
@ -24,12 +24,12 @@ class CompletionWorker(Thread):
|
|||||||
|
|
||||||
daemon = True
|
daemon = True
|
||||||
|
|
||||||
def __init__(self, worker_entry_point='main'):
|
def __init__(self, result_callback=lambda x:x, worker_entry_point='main'):
|
||||||
Thread.__init__(self)
|
Thread.__init__(self)
|
||||||
self.worker_entry_point = worker_entry_point
|
self.worker_entry_point = worker_entry_point
|
||||||
self.start()
|
self.start()
|
||||||
self.main_queue = Queue()
|
self.main_queue = Queue()
|
||||||
self.result_queue = Queue()
|
self.result_callback = result_callback
|
||||||
self.reap_thread = None
|
self.reap_thread = None
|
||||||
self.shutting_down = False
|
self.shutting_down = False
|
||||||
self.connected = Event()
|
self.connected = Event()
|
||||||
@ -121,7 +121,11 @@ class CompletionWorker(Thread):
|
|||||||
self.send(request)
|
self.send(request)
|
||||||
result = self.recv()
|
result = self.recv()
|
||||||
if result.request_id == self.latest_completion_request_id:
|
if result.request_id == self.latest_completion_request_id:
|
||||||
self.result_queue.put(result)
|
try:
|
||||||
|
self.result_callback(result)
|
||||||
|
except Exception:
|
||||||
|
import traceback
|
||||||
|
traceback.print_exc()
|
||||||
|
|
||||||
def clear_caches(self, cache_type=None):
|
def clear_caches(self, cache_type=None):
|
||||||
self.main_queue.put((CLEAR_REQUEST, Request(None, 'clear_caches', cache_type, None)))
|
self.main_queue.put((CLEAR_REQUEST, Request(None, 'clear_caches', cache_type, None)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user