Re: [Asio-samples-users] добавление API записи чтения в echo_server
Status: Beta
Brought to you by:
mabrarov
From: Marat A. <ab...@gm...> - 2012-05-07 09:07:58
|
Добрый день. > подскажите, каким образом, наиболее эффективно, можно изменить 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. Regards, Marat Abrarov. |