![]() |
PIP 5.6.1
Platform-Independent Primitives
|
PIChunkStream — бинарный поток, в котором данные хранятся чанками: у каждого чанка целочисленный id и значение. Чтение идёт по id, поэтому можно добавлять или менять порядок полей с сохранением обратной совместимости: старые читатели игнорируют неизвестные id, новые могут пропускать необязательные.
Есть две версии формата (PIChunkStream::Version_1 и Version_2); версию выбирает запись, при чтении она определяется автоматически. По умолчанию запись идёт в Version_2.
Имеет смысл использовать поток чанков, когда:
pip_cmg выдаёт операторы через PIChunkStream и id полей (см. Генерация кода по PIMETA id и simple-stream / no-stream).Для фиксированных неизменяемых форматов достаточно обычных операторов PIBinaryStream (см. Поток ввода/вывода).
Создают PIChunkStream из PIByteArray (чтение или чтение/запись). Запись: cs << cs.chunk(id, value) или add(id, value); чтение: read() — следующий id, затем get(value). data() возвращает буфер для сохранения или передачи. Примеры генерации операторов — в Генерация кода.