aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/motion_report.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2021-08-11 23:29:37 -0400
committerKevin O'Connor <kevin@koconnor.net>2021-08-30 12:12:11 -0400
commit6999ff6256514474d2a309c76cef18e26acf2969 (patch)
tree8f0ff3704f28cc7844e06e40aa296ab6bcc60b6d /klippy/extras/motion_report.py
parent3f46609c1d99940268c05e7e0aebb829212016d7 (diff)
downloadkutter-6999ff6256514474d2a309c76cef18e26acf2969.tar.gz
kutter-6999ff6256514474d2a309c76cef18e26acf2969.tar.xz
kutter-6999ff6256514474d2a309c76cef18e26acf2969.zip
motion_report: Add helper tool for internal subscribers of data
Add support for internal clients to "subscribe" to data like external clients. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras/motion_report.py')
-rw-r--r--klippy/extras/motion_report.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/klippy/extras/motion_report.py b/klippy/extras/motion_report.py
index 439c30c6..575ff588 100644
--- a/klippy/extras/motion_report.py
+++ b/klippy/extras/motion_report.py
@@ -50,6 +50,11 @@ class APIDumpHelper:
template = web_request.get_dict('response_template', {})
self.clients[cconn] = template
self._start()
+ def add_internal_client(self):
+ cconn = InternalDumpClient()
+ self.clients[cconn] = {}
+ self._start()
+ return cconn
def _update(self, eventtime):
try:
msg = self.data_cb(eventtime)
@@ -69,6 +74,23 @@ class APIDumpHelper:
cconn.send(tmp)
return eventtime + self.update_interval
+# An "internal webhooks" wrapper for using APIDumpHelper internally
+class InternalDumpClient:
+ def __init__(self):
+ self.msgs = []
+ self.is_done = False
+ def get_messages(self):
+ return self.msgs
+ def finalize(self):
+ self.is_done = True
+ def is_closed(self):
+ return self.is_done
+ def send(self, msg):
+ self.msgs.append(msg)
+ if len(self.msgs) >= 10000:
+ # Avoid filling up memory with too many samples
+ self.finalize()
+
# Extract stepper queue_step messages
class DumpStepper:
def __init__(self, printer, mcu_stepper):