text_data_stream.py 574 B

1234567891011121314151617181920212223242526
  1. import struct
  2. from .text_data_pb2 import TextData
  3. def read_pb_stream(f):
  4. while True:
  5. buf = f.read(4)
  6. if len(buf) == 0:
  7. break
  8. size = struct.unpack("I", buf)[0]
  9. buf = f.read(size)
  10. text_data = TextData()
  11. text_data.ParseFromString(buf)
  12. yield text_data
  13. def write_pb_stream(f, text_data):
  14. buf = text_data.SerializeToString()
  15. f.write(struct.pack("I", len(buf)))
  16. f.write(buf)
  17. def pack_pb_stream(text_data):
  18. buf = text_data.SerializeToString()
  19. return struct.pack("I", len(buf)) + buf