def _load_packets_from_pkt_files()

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_, ))