eddy_em: (Default)
[personal profile] eddy_em
Уже в который раз пишу одно и то же: демон, работающий с последовательным портом и сокетом (UNIX или сетевым). Протоколы везде текстовые, т.е. получается, что один поток работает с портом, второй — с сокетом. Что-то пришло — обрабатываем геттером, соответствующим команде. Нужно что-то сделать — вызываем сеттер (при необходимости ожидающий ответ и вызывающий соответствующий геттер или просто эхо проверяющий).
Подумал было: а вдруг уже у кого-то подобное есть. А вот фиг вам! Все равно придется написать такие же простыни кода, как и при непосредственной работе с сокетами и портом.

Похоже, надо будет как-нибудь подумать, какие могут быть варианты протоколов общения и запилить уже библиотеку. Как я сделал когда-то со своими сниппетами. Удобней исправить баг или внести новую фичу в библиотеку, чем искать все, где скопипащен такой сниппет. Да и копипаста может приводить к другим багам (например, я обнаружил небольшой баг в одном демоне, который уже пару лет на БТА работает; возник он по вине копипасты: кусок скопировал, а идентификаторы изменить забыл).

Думаю, парсер вообще вполне может быть общим (т.к. и через сокет, и через порт протокол более-менее схож). Получил строку, заканчивающуюся '\n', вызвал парсер, тот проанализировал первую команду и, если нашел ее в массиве структур {команда, функция, [флаги]}, вызвал соответствующую функцию. Получается, что уйма кода уйдет внутрь библиотеки, а снаружи знай себе вызывай конструктор, деструктор да немного вспомогательных функций. Ну и, само собой, пиши массивы структур и собственно сами сеттеры-геттеры.

Кажется, я изобретаю С++ ☺
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 02:27 pm
Powered by Dreamwidth Studios