29 lines
845 B
Text
29 lines
845 B
Text
# Auto-generated, do not edit
|
|
|
|
from msgcodec.codec import Codec
|
|
from msgcodec.messages import *
|
|
|
|
class MessageCodec(Codec):
|
|
|
|
def read_message_id(self, reader: io.BytesIO) -> int:
|
|
"""
|
|
Read and return the first byte where the message id is encoded
|
|
"""
|
|
id_ = self.read_uint(reader)
|
|
return id_
|
|
|
|
def encode(self, m: Message) -> bytes:
|
|
...
|
|
|
|
def decode(self, b: bytes) -> Message:
|
|
reader = io.BytesIO(b)
|
|
message_id = self.read_message_id(reader)
|
|
<% $messages.each do |msg| %>
|
|
if message_id == <%= msg.id %>:
|
|
return <%= msg.name %>(
|
|
<%= msg.attributes.map { |attr|
|
|
"#{attr.name.underscore}=self.read_#{attr.type.to_s}(reader)" }
|
|
.join ",\n "
|
|
%>
|
|
)
|
|
<% end %>
|