Skip to content

Commit 5b4979f

Browse files
committed
add quit method
1 parent 1d08008 commit 5b4979f

3 files changed

Lines changed: 22 additions & 14 deletions

File tree

src/tomato/daemon/driver.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,8 @@ def tomato_driver() -> None:
310310
logger.critical("uncaught exception %s", type(e), exc_info=True)
311311
raise e
312312

313-
logger.info("driver '%s' is beginning reset", args.driver)
314-
interface.reset()
313+
logger.info("driver '%s' is beginning to quit", args.driver)
314+
interface.quit()
315315

316316
logger.info("driver '%s' is quitting", args.driver)
317317

src/tomato/driverinterface_2_0/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,12 @@ def status(self) -> Reply:
477477
data=devkeys,
478478
)
479479

480+
def quit(self) -> Reply:
481+
"""
482+
Passthrough to :func:`reset` for foward compatibility.
483+
"""
484+
return self.reset()
485+
480486
@log_errors
481487
def reset(self) -> Reply:
482488
"""

src/tomato/driverinterface_2_1/__init__.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,12 @@ def status(self) -> Reply:
432432
data=devkeys,
433433
)
434434

435+
def quit(self) -> Reply:
436+
"""
437+
Passthrough to :func:`reset` for foward compatibility.
438+
"""
439+
return self.reset()
440+
435441
@log_errors
436442
def reset(self) -> Reply:
437443
"""
@@ -444,15 +450,10 @@ def reset(self) -> Reply:
444450
"""
445451
logger.info("resetting all components on this driver")
446452
for key, dev in self.devmap.items():
447-
if dev.thread.is_alive():
448-
logger.warning("stopping task on component %s", key)
449-
setattr(dev.thread, "do_run", False)
450-
dev.thread.join(timeout=1)
451-
if dev.thread.is_alive():
452-
logger.error("task on component %s is still running", key)
453-
else:
454-
logger.debug("component %s has no running task", key)
455-
self.cmp_reset(key=key)
453+
logger.warning("stopping task on component %s", key)
454+
self.task_stop(key=key)
455+
logger.warning("resetting component %s", key)
456+
self.cmp_reset(key=key, do_run=False)
456457
return Reply(
457458
success=True,
458459
msg="all components on driver have been reset",
@@ -498,7 +499,7 @@ def __init__(self, driver, key, **kwargs) -> None:
498499
self.driver = driver
499500
self.key = key
500501
self.task_list = queue.Queue()
501-
self.thread = Thread(target=self.task_runner, daemon=False)
502+
self.thread = Thread(target=self.task_runner, daemon=True)
502503
self.thread.do_run = True
503504
self.thread.do_run_task = False
504505
self.thread.start()
@@ -534,9 +535,10 @@ def task_runner(self) -> None:
534535

535536
self.running = task
536537
try:
538+
thread.do_run_task = False
537539
if isinstance(task, Task):
538-
thread.do_run_task = True
539540
self.prepare_task(task=task)
541+
thread.do_run_task = True
540542
t_0 = time.perf_counter()
541543
t_p = t_0
542544
self.data = None
@@ -684,7 +686,7 @@ def reset(self, do_run: bool = True, **kwargs) -> None:
684686
self.data = None
685687
self.datalock = RLock()
686688
self.task_list = queue.Queue()
687-
self.thread = Thread(target=self.task_runner, daemon=False)
689+
self.thread = Thread(target=self.task_runner, daemon=True)
688690
self.thread.do_run = do_run
689691
self.thread.do_run_task = False
690692
self.thread.start()

0 commit comments

Comments
 (0)