Account name:
Password
(OpenID?)
(Forgot it?)
Remember Me
You're viewing
beldmit
's journal
Create a Dreamwidth Account
Learn More
Interest
Region
Site and Account
FAQ
Email
Reload page in style:
site
light
Dmitry Belyavskiy
Очень понравилось
Очень понравилось
Oct
.
22nd
,
2019
03:12 pm
beldmit
При работе с сетью нельзя абстрагироваться от порядка байтов, поэтому хотелось бы сделать так, чтобы его нельзя было проигнорировать при написании кода. Более того, у нас не просто число в BE — это номер порта, IP-адрес, номер последовательности TCP, контрольная сумма. Одно нельзя присваивать другому, даже если количество бит совпадает.
Решение известно — строгая типизация, то есть отдельные типы для портов, адресов, номеров. Кроме того, эти типы должны поддерживать конвертацию BE/LE. Boost.Endian нам не подходит, так как в проекте нет Boost.
Размер проекта около 40 тысяч строк на C++17. Если создать безопасные типы-обертки и переписать на них структуры заголовков, автоматически перестанут компилироваться все места, где есть работа с BE. Придется один раз пройтись по ним всем, зато новый код будет только безопасным.
Жаль, что на C это скорее всего не реализовать.
Crossposts:
https://beldmit.livejournal.com/590499.html
Flat
|
Top-Level Comments Only
no subject
Date:
2019-10-22 04:10 pm (UTC)
From:
filin
С виду — проканает. Там полноценная система типов и строгая типизация времени компиляции, с zero overhead.
8 comments
Reply
Flat
|
Top-Level Comments Only
Profile
Dmitry Belyavskiy
Recent Entries
Archive
Reading
Tags
Memories
Profile
December
2025
S
M
T
W
T
F
S
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Most Popular Tags
ietf
-
10 uses
ipad
-
15 uses
linux
-
36 uses
postgresql
-
13 uses
python
-
13 uses
security
-
120 uses
star wars
-
9 uses
бегущий город
-
61 uses
виртуальный регистратор
-
18 uses
вопрос к залу
-
182 uses
джордан
-
13 uses
домены
-
47 uses
идиоты
-
18 uses
интересное
-
148 uses
информация
-
94 uses
история
-
173 uses
кино
-
35 uses
климат
-
9 uses
книги
-
483 uses
компьютерное
-
536 uses
компьютерные игры
-
40 uses
космос
-
51 uses
кошки
-
166 uses
криптография
-
94 uses
лытдыбр
-
977 uses
мысли
-
283 uses
некролог
-
77 uses
новый год
-
52 uses
поездки
-
176 uses
политика
-
295 uses
программирование
-
163 uses
психология
-
74 uses
работа
-
293 uses
раздача
-
15 uses
ролевые игры
-
52 uses
рыбинск
-
44 uses
семья
-
150 uses
снегов
-
18 uses
ссылки
-
447 uses
стихи
-
121 uses
текст
-
20 uses
транспорт
-
19 uses
три девятки
-
6 uses
чгк
-
197 uses
черный юмор
-
226 uses
чехия
-
20 uses
шахматы
-
21 uses
экономика
-
21 uses
юмор
-
218 uses
ядерная физика
-
14 uses
Page Summary
filin
-
(no subject)
Style Credit
Style:
Neutral Good
for
Practicality
by
timeasmymeasure
Expand Cut Tags
No cut tags
Page generated Jan. 12th, 2026 01:09 pm
Powered by
Dreamwidth Studios
no subject
Date: 2019-10-22 04:10 pm (UTC)