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

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

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

Кажется, я изобретаю С++ ☺

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 10:20 am
Powered by Dreamwidth Studios