Spaces:
Running
on
A10G
Running
on
A10G
import struct | |
from .text_data_pb2 import TextData | |
def read_pb_stream(f): | |
while True: | |
buf = f.read(4) | |
if len(buf) == 0: | |
break | |
size = struct.unpack("I", buf)[0] | |
buf = f.read(size) | |
text_data = TextData() | |
text_data.ParseFromString(buf) | |
yield text_data | |
def write_pb_stream(f, text_data): | |
buf = text_data.SerializeToString() | |
f.write(struct.pack("I", len(buf))) | |
f.write(buf) | |
def pack_pb_stream(text_data): | |
buf = text_data.SerializeToString() | |
return struct.pack("I", len(buf)) + buf | |
def split_pb_stream(f): | |
while True: | |
head = f.read(4) | |
if len(head) == 0: | |
break | |
size = struct.unpack("I", head)[0] | |
buf = f.read(size) | |
yield head + buf | |