Зерновая сериализация с контрольной суммой - PullRequest
0 голосов
/ 01 ноября 2018

как мне написать класс архива Cereal с контрольной суммой? Я хочу использовать сериализацию для отправки данных по сети, например, как пакет UDP.

  • Класс Archive должен быть производным от BinaryOutputArchive или PortableBinaryOutputArchive, но будет проще использовать его с любым другим типом архива.
  • Контрольная сумма должна находиться в конце потока сериализации, а не для отдельных объектов.
  • Было бы неплохо иметь выбор для хеш-функции (например, crc, md5) и размера хеша. Но любой подойдет для начала.
  • Десериализация должна завершиться ошибкой при чтении потока с поврежденной контрольной суммой.

EDIT:

Прежде всего, я надеюсь, что кто-то с большим количеством Google Foo может указать мне на уже существующее решение. Хотя я искал долго и усердно, я просто не могу поверить, что никому больше не нужна эта функция.

В противном случае я ищу советы для элегантного решения, соответственно. архитектура. Э.Г.

  • Должен ли наследовать класс Archive, установить для потока тот, который вычисляет контрольную сумму, а затем копирует данные в целевой поток и в деструкторе записывает контрольную сумму в целевой поток?
  • Или я могу получить метод базового класса Archive, который записывает данные?

Я знаю, что есть много возможных способов, и некоторые из них просто (более) пригодны для использования в долгосрочной перспективе. У меня нет навыков, чтобы знать хорошую архитектуру, но я хотел бы учиться. В идеале один из разработчиков уже задумался над этим вопросом, и у него в голове примерный план.

...