diff --git a/lib/python/labcomm/LabComm.py b/lib/python/labcomm/LabComm.py index d702a1c26e000f944850ad00008b5dbc32a216fe..57f70f453f2582b0c6c9b9d9588df2eb50a6f84b 100644 --- a/lib/python/labcomm/LabComm.py +++ b/lib/python/labcomm/LabComm.py @@ -759,24 +759,29 @@ class Encoder(Codec): self.writer.write(packer.pack(format, *args)) def add_decl(self, decl, index=0): - if super(Encoder, self).add_decl(decl, index) and index == 0: - decl.encode_decl(self) - self.writer.mark() + if index == 0: + self.writer.mark_begin(decl, None) + if super(Encoder, self).add_decl(decl, index): + decl.encode_decl(self) + self.writer.mark_end(decl, None) def add_ref(self, decl, index=0): ref = sample_ref(name=decl.name, decl=decl.decl, sample=decl) - if super(Encoder, self).add_ref(ref, index) and index == 0: - ref.encode_decl(self) - self.writer.mark() + if index == 0: + self.writer.mark_begin(decl, None) + if super(Encoder, self).add_ref(ref, index): + ref.encode_decl(self) + self.writer.mark_end(decl, None) def encode(self, object, decl=None): if decl == None: name = self.type_to_name[object.__class__] decl = self.name_to_decl[name] + self.writer.mark_begin(decl, object) self.encode_type_number(decl) with length_encoder(self) as e: decl.encode(e, object) - self.writer.mark() + self.writer.mark_end(decl, object) def encode_type_number(self, decl): try: diff --git a/lib/python/labcomm/StreamWriter.py b/lib/python/labcomm/StreamWriter.py index a85c43d96b9d98de72f4a112720d5e23791df076..2fffc989662653bd2d40c75ea87b86b150edbd97 100644 --- a/lib/python/labcomm/StreamWriter.py +++ b/lib/python/labcomm/StreamWriter.py @@ -10,7 +10,10 @@ class StreamWriter: self.stream.write(data) pass - def mark(self): + def mark_begin(self, decl, value): + pass + + def mark_end(self, decl, value): self.stream.flush() pass