diff --git a/hippolyzer/apps/proxy_gui.py b/hippolyzer/apps/proxy_gui.py index 3d1c132..1301e5a 100644 --- a/hippolyzer/apps/proxy_gui.py +++ b/hippolyzer/apps/proxy_gui.py @@ -34,7 +34,7 @@ from hippolyzer.lib.base.message.message_formatting import ( SpannedString, ) from hippolyzer.lib.base.message.msgtypes import MsgType -from hippolyzer.lib.base.message.template_dict import TemplateDictionary +from hippolyzer.lib.base.message.template_dict import DEFAULT_TEMPLATE_DICT from hippolyzer.lib.base.ui_helpers import loadUi import hippolyzer.lib.base.serialization as se from hippolyzer.lib.base.network.transport import Direction, SocketUDPTransport @@ -446,7 +446,7 @@ class MessageBuilderWindow(QtWidgets.QMainWindow): def __init__(self, parent, session_manager): super().__init__(parent=parent) loadUi(MESSAGE_BUILDER_UI_PATH, self) - self.templateDict = TemplateDictionary() + self.templateDict = DEFAULT_TEMPLATE_DICT self.llsdSerializer = LLSDMessageSerializer() self.sessionManager: SessionManager = session_manager self.regionModel = RegionListModel(self, self.sessionManager) diff --git a/hippolyzer/lib/base/message/llsd_msg_serializer.py b/hippolyzer/lib/base/message/llsd_msg_serializer.py index 1120e64..f54e0d6 100644 --- a/hippolyzer/lib/base/message/llsd_msg_serializer.py +++ b/hippolyzer/lib/base/message/llsd_msg_serializer.py @@ -5,14 +5,13 @@ from hippolyzer.lib.base import llsd from hippolyzer.lib.base.message.data_packer import LLSDDataPacker from hippolyzer.lib.base.message.message import Message from hippolyzer.lib.base.message.template import MessageTemplateVariable -from hippolyzer.lib.base.message.template_dict import TemplateDictionary - +from hippolyzer.lib.base.message.template_dict import TemplateDictionary, DEFAULT_TEMPLATE_DICT VAR_PAIR = Tuple[dict, MessageTemplateVariable] class LLSDMessageSerializer: - DEFAULT_TEMPLATE = TemplateDictionary() + DEFAULT_TEMPLATE = DEFAULT_TEMPLATE_DICT def __init__(self, message_template=None, message_cls: Type[Message] = Message): if message_template is not None: diff --git a/hippolyzer/lib/base/message/template_dict.py b/hippolyzer/lib/base/message/template_dict.py index a67ad30..16d1840 100644 --- a/hippolyzer/lib/base/message/template_dict.py +++ b/hippolyzer/lib/base/message/template_dict.py @@ -27,25 +27,35 @@ from .template import MessageTemplate from .template_parser import MessageTemplateParser +DEFAULT_PARSER = MessageTemplateParser(msg_tmpl) + + class TemplateDictionary: """the dictionary with all known templates""" def __init__(self, template_list=None, message_template=None): if template_list is None: if message_template is None: - parser = MessageTemplateParser(msg_tmpl) + parser = DEFAULT_PARSER else: parser = MessageTemplateParser(message_template) template_list = parser.message_templates - self.template_list: typing.List[MessageTemplate] = template_list - + self.template_list: typing.List[MessageTemplate] = [] # maps name to template self.message_templates = {} # maps (freq,num) to template self.message_dict = {} + self.load_templates(template_list) + + def load_templates(self, template_list): + self.template_list.clear() + self.template_list.extend(template_list) + self.message_templates.clear() + self.message_dict.clear() + self.build_dictionaries(template_list) self.build_message_ids() @@ -99,3 +109,6 @@ class TemplateDictionary: def __iter__(self): return iter(self.template_list) + + +DEFAULT_TEMPLATE_DICT = TemplateDictionary() diff --git a/hippolyzer/lib/base/message/udpdeserializer.py b/hippolyzer/lib/base/message/udpdeserializer.py index 330a17e..01cfd0c 100644 --- a/hippolyzer/lib/base/message/udpdeserializer.py +++ b/hippolyzer/lib/base/message/udpdeserializer.py @@ -26,7 +26,7 @@ from logging import getLogger from hippolyzer.lib.base.datatypes import JankStringyBytes from hippolyzer.lib.base.settings import Settings from .template import MessageTemplateVariable -from .template_dict import TemplateDictionary +from .template_dict import DEFAULT_TEMPLATE_DICT from .msgtypes import MsgType, MsgBlockType, PacketLayout from .data_packer import TemplateDataPacker from .message import Message, Block @@ -62,7 +62,7 @@ def _parse_msg_num(reader: se.BufferReader): class UDPMessageDeserializer: - DEFAULT_TEMPLATE = TemplateDictionary() + DEFAULT_TEMPLATE = DEFAULT_TEMPLATE_DICT def __init__(self, settings=None): self.settings = settings or Settings() diff --git a/hippolyzer/lib/base/message/udpserializer.py b/hippolyzer/lib/base/message/udpserializer.py index b85ec21..e5617a0 100644 --- a/hippolyzer/lib/base/message/udpserializer.py +++ b/hippolyzer/lib/base/message/udpserializer.py @@ -26,7 +26,7 @@ from .data_packer import TemplateDataPacker from .message import Message, MsgBlockList from .msgtypes import MsgType, MsgBlockType from .template import MessageTemplateVariable, MessageTemplateBlock -from .template_dict import TemplateDictionary +from .template_dict import TemplateDictionary, DEFAULT_TEMPLATE_DICT from hippolyzer.lib.base import exc from hippolyzer.lib.base import serialization as se from hippolyzer.lib.base.datatypes import RawBytes @@ -35,7 +35,7 @@ logger = getLogger('message.udpserializer') class UDPMessageSerializer: - DEFAULT_TEMPLATE = TemplateDictionary(None) + DEFAULT_TEMPLATE = DEFAULT_TEMPLATE_DICT def __init__(self, message_template=None): if message_template is not None: