|
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 |
|
|