"""
self._clients: List[str] = []
self._children: Dict[str, Dict[str, MessageTemplateRegistry]] = {}
+ self._templates: Dict[str, List[MessageTemplate]] = {}
def insert(self, template: MessageTemplate, client: str) -> None:
"""Register a client for a template.
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]
def delete(self, client: str) -> bool:
"""Unregister a client from all templates.
if not new_children[key]:
del new_children[key]
self._children = new_children
+ if client in self._templates:
+ del self._templates[client]
if self._clients or self._children:
return True
return False
>>> r.get_templates('Client 6')
[{'k1': {'const': 'v1'}}, {'k2': {'const': 'v1'}}]
"""
- result = []
- if client in self._clients:
- result.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)
- result.append(current)
- return result
+ 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]
class BusException(Exception):