Cache templates during insert.
authorBenjamin Braatz <benjamin.braatz@graph-it.com>
Wed, 1 Sep 2021 10:46:22 +0000 (12:46 +0200)
committerBenjamin Braatz <benjamin.braatz@graph-it.com>
Wed, 1 Sep 2021 10:46:22 +0000 (12:46 +0200)
controlpi/messagebus.py

index 02e45b5544beaee0ebc0895acec84304bde5002d..42647e0bffe752e3f7ca955e233b50096b9eee57 100644 (file)
@@ -807,8 +807,9 @@ class MessageTemplateRegistry:
             if schema_string not in self._children[key]:
                 self._children[key][schema_string] = MessageTemplateRegistry()
             self._children[key][schema_string].insert(reduced_template, client)
-        if client in self._templates:
-            del self._templates[client]
+        if client not in self._templates:
+            self._templates[client] = []
+        self._templates[client].append(template)
 
     def delete(self, client: str) -> bool:
         """Unregister a client from all templates.
@@ -974,19 +975,9 @@ class MessageTemplateRegistry:
         >>> r.get_templates('Client 6')
         [{'k1': {'const': 'v1'}}, {'k2': {'const': 'v1'}}]
         """
-        if client not in self._templates:
-            self._templates[client] = []
-            if client in self._clients:
-                self._templates[client].append(MessageTemplate())
-            for key in self._children:
-                for schema_string in self._children[key]:
-                    schema = json.loads(schema_string)
-                    child = self._children[key][schema_string]
-                    for template in child.get_templates(client):
-                        current = MessageTemplate({key: schema})
-                        current.update(template)
-                        self._templates[client].append(current)
-        return self._templates[client]
+        if client in self._templates:
+            return self._templates[client]
+        return []
 
 
 class BusException(Exception):