klippy: Convert printer_state("shutdown") to an event handler

Convert all users of the printer_state("shutdown") handler to register
a "klippy:shutdown" event handler instead.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2019-01-08 09:15:40 -05:00
parent b2d5a8e65b
commit fb7fe282c8
6 changed files with 31 additions and 27 deletions

View file

@ -51,14 +51,14 @@ class Printer:
self.bglogger = bglogger
self.start_args = start_args
self.reactor = reactor.Reactor()
gc = gcode.GCodeParser(self, input_fd)
self.objects = collections.OrderedDict({'gcode': gc})
self.reactor.register_callback(self._connect)
self.state_message = message_startup
self.is_shutdown = False
self.run_result = None
self.state_cb = [gc.printer_state]
self.event_handlers = {}
gc = gcode.GCodeParser(self, input_fd)
self.objects = collections.OrderedDict({'gcode': gc})
self.state_cb = [gc.printer_state]
def get_start_args(self):
return self.start_args
def get_reactor(self):
@ -183,8 +183,11 @@ class Printer:
return
self.is_shutdown = True
self._set_state("%s%s" % (msg, message_shutdown))
for cb in self.state_cb:
cb('shutdown')
for cb in self.event_handlers.get("klippy:shutdown", []):
try:
cb()
except:
logging.exception("Exception during shutdown handler")
def invoke_async_shutdown(self, msg):
self.reactor.register_async_callback(
(lambda e: self.invoke_shutdown(msg)))