Code that handled client and server messages check was the same, just changed some variable names. Instead use a class to store same information and reuse the code. This allows easier extension of the 2 path of code. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- python_modules/ptypes.py | 66 +++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 38 deletions(-) diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py index 0f6d8d6..ef580aa 100644 --- a/python_modules/ptypes.py +++ b/python_modules/ptypes.py @@ -1024,53 +1024,43 @@ class ChannelType(Type): if self.base != None: self.base = self.base.resolve() - server_messages = self.base.server_messages[:] - server_messages_byname = self.base.server_messages_byname.copy() - client_messages = self.base.client_messages[:] - client_messages_byname = self.base.client_messages_byname.copy() - # Set default member_name, FooChannel -> foo self.member_name = self.name[:-7].lower() - else: - server_messages = [] - server_messages_byname = {} - client_messages = [] - client_messages_byname = {} - server_count = 1 - client_count = 1 + class MessagesInfo: + def __init__(self, base, is_server): + self.is_server = is_server + if base != None: + kind = 'server' if is_server else 'client' + self.messages = base.__dict__[kind + '_messages'][:] + self.messages_byname = base.__dict__[kind + '_messages_byname'].copy() + else: + self.messages = [] + self.messages_byname = {} + self.count = 1 + + server_info = MessagesInfo(self.base, True) + client_info = MessagesInfo(self.base, False) - server = True + info = server_info for m in self.members: if m == "server": - server = True + info = server_info elif m == "client": - server = False - elif server: - m.is_server = True - m = m.resolve(self) - if m.value: - server_count = m.value + 1 - else: - m.value = server_count - server_count = server_count + 1 - server_messages.append(m) - server_messages_byname[m.name] = m + info = client_info else: - m.is_server = False + m.is_server = info.is_server m = m.resolve(self) - if m.value: - client_count = m.value + 1 - else: - m.value = client_count - client_count = client_count + 1 - client_messages.append(m) - client_messages_byname[m.name] = m - - self.server_messages = server_messages - self.server_messages_byname = server_messages_byname - self.client_messages = client_messages - self.client_messages_byname = client_messages_byname + if not m.value: + m.value = info.count + info.count = m.value + 1 + info.messages.append(m) + info.messages_byname[m.name] = m + + self.server_messages = server_info.messages + self.server_messages_byname = server_info.messages_byname + self.client_messages = client_info.messages + self.client_messages_byname = client_info.messages_byname return self -- 2.17.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel