* feat(tracker): update message schema with BatchMetadata; separate message-related responsibilities; add message size * chore(docker): removing edge busybox, as the main repo updated * feat(backend): updated message protocol templates * feat(backend): added support of message size * feat(backend): implemented iterator for new message protocol (with message size) Co-authored-by: Alex Kaminskii <alex@openreplay.com>
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.snake_case}=self.read_#{attr.type.to_s}(reader)" }
|
|
.join ",\n "
|
|
%>
|
|
)
|
|
<% end %>
|