in pywb/packetsloader.py [0:0]
def _load_packets_from_pkt_files(files):
buffer_ = ""
packet_len = 0
for file_ in files:
file_ = os.path.abspath(os.path.expanduser(file_))
with open(file_, "rb", io.DEFAULT_BUFFER_SIZE) as fd:
while True:
bytes_ = fd.read(io.DEFAULT_BUFFER_SIZE)
if not bytes_:
if buffer_:
yield buffer_
break
buffer_ += bytes_
while buffer_:
delimite_pos = 0
while delimite_pos < len(buffer_) and buffer_[delimite_pos] == '\0':
delimite_pos += 1
buffer_ = buffer_[delimite_pos:]
if not buffer_ or buffer_.isdigit():
break
if packet_len == 0:
if buffer_[0].isdigit():
packet_len = int(''.join(itertools.takewhile(str.isdigit, buffer_)))
# add 1 to skip \n
buffer_ = buffer_[len(str(packet_len)) + 1:]
else:
packet_len = buffer_.find('\0')
if packet_len == -1:
packet_len = 0
break
if packet_len >= 0:
if len(buffer_) >= packet_len:
yield buffer_[:packet_len]
buffer_ = buffer_[packet_len:]
packet_len = 0
else:
break
else:
raise ValueError("Internal error, get buffer(%s)" % (buffer_, ))