Dmitry Belyavsky (beldmit) wrote,
Dmitry Belyavsky
beldmit

Categories:

Очень понравилось

При работе с сетью нельзя абстрагироваться от порядка байтов, поэтому хотелось бы сделать так, чтобы его нельзя было проигнорировать при написании кода. Более того, у нас не просто число в BE — это номер порта, IP-адрес, номер последовательности TCP, контрольная сумма. Одно нельзя присваивать другому, даже если количество бит совпадает.

Решение известно — строгая типизация, то есть отдельные типы для портов, адресов, номеров. Кроме того, эти типы должны поддерживать конвертацию BE/LE. Boost.Endian нам не подходит, так как в проекте нет Boost.

Размер проекта около 40 тысяч строк на C++17. Если создать безопасные типы-обертки и переписать на них структуры заголовков, автоматически перестанут компилироваться все места, где есть работа с BE. Придется один раз пройтись по ним всем, зато новый код будет только безопасным.


Жаль, что на C это скорее всего не реализовать.

This entry was originally posted at https://beldmit.dreamwidth.org/893291.html. Your comment? (comment count unavailable comments)
Tags: компьютерное, программирование, ссылки
Subscribe

  • RIP кошка Вьюшка

    Прожила она у нас почти день в день 11 лет — вот запись о её обретении, 14 августа 2010 года. Была меховая, с очень пушистым хвостом, мурчала и…

  • Умер Костя Алдохин

    Сейчас трудно объяснить, что представляли собой фестивали в 90-е фестивали в Великих Луках. Камерные, с уникальной формулой подсчёта, с преферансом…

  • Куковлев

    С Сергеем содержательно я познакомился тогда же, когда и с Андреем Ленским, осенью 1997 года. Про него, конечно, я слышал и задолго до того —…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments