Re: [Asio-samples-users] добавление API записи чтения в echo_server
Status: Beta
Brought to you by:
mabrarov
From: niXman <i.n...@gm...> - 2012-05-07 09:19:58
|
7 мая 2012 г. 13:07 пользователь Marat Abrarov написал: > Добрый день. > >> подскажите, каким образом, наиболее эффективно, можно изменить session >> так, чтоб добавить методы чтения/записи для использования в >> пользовательской логике? > > В том-то и дело, что решение о "старте" чтения/записи принимает КА, а не пользовательская логика. > > Т.е. правильнее сказать так: есть КА для процесса чтения и есть КА для процесса записи. Оба эти автомата кроме собственного состояния учитывают еще и наличие места в буфере (он сделан общим, но это только для ограничения объема и эффективного использования), т.е. доп. состояния/флаги. > > Пользовательская логика должна взаимодействовать с этими КА, но не с сокетом (lower layer по отношению к КА) напрямую. В простейшем случае такое взаимодействие (или правильнее "воздействие") можно выразить через изменение состояния буферов ввода/вывода (и прочих состояний других КА) и вызов session::continue_work() (скорее всего, это место тоже придется модифицировать). > > Я не уверен, что КА (их несколько и они связаны) в echo_server организованы достаточно понятно и просто (для дальнейших модификаций). Оптимально - да, возможно. Но отсечение многих частей делает неясным и неявным некоторые аспекты взаимодействия этих КА. В связи с этим, я пытаюсь изобразить (UML state machine) эти КА и связать их взаимодействие общими событиями (это та часть документации, без которой уже сложно двигаться дальше). По-моему, именно набор взаимосвязанных КА наиболее обобщенно описывает real life (например, клетки и процессы в них) и communicating software (где все есть множество взаимосвязанных параллельных/fork-ющихся процессов). Ну, об этом я уже писал: http://asio-samples.blogspot.com/2009/10/httpwww.html. спасибо за ответ! но из всего вышеописанного, я так и не понял следующее: 1. с чего начать 2. что изменять 3. на что обратить внимание 4. какая последовательность вызовов+логика etc... не могли бы Вы выразить это в псевдокоде+словах, пожалуйста. спасибо. -- Regards, niXman |