как мне написать класс архива Cereal с контрольной суммой? Я хочу использовать сериализацию для отправки данных по сети, например, как пакет UDP.
- Класс Archive должен быть производным от BinaryOutputArchive или PortableBinaryOutputArchive, но будет проще использовать его с любым другим типом архива.
- Контрольная сумма должна находиться в конце потока сериализации, а не для отдельных объектов.
- Было бы неплохо иметь выбор для хеш-функции (например, crc, md5) и размера хеша. Но любой подойдет для начала.
- Десериализация должна завершиться ошибкой при чтении потока с поврежденной контрольной суммой.
EDIT:
Прежде всего, я надеюсь, что кто-то с большим количеством Google Foo может указать мне на уже существующее решение. Хотя я искал долго и усердно, я просто не могу поверить, что никому больше не нужна эта функция.
В противном случае я ищу советы для элегантного решения, соответственно. архитектура. Э.Г.
- Должен ли наследовать класс Archive, установить для потока тот, который вычисляет контрольную сумму, а затем копирует данные в целевой поток и в деструкторе записывает контрольную сумму в целевой поток?
- Или я могу получить метод базового класса Archive, который записывает данные?
Я знаю, что есть много возможных способов, и некоторые из них просто (более) пригодны для использования в долгосрочной перспективе. У меня нет навыков, чтобы знать хорошую архитектуру, но я хотел бы учиться. В идеале один из разработчиков уже задумался над этим вопросом, и у него в голове примерный план.