Re: [Asio-samples-users] добавление API записи чтения в echo_server
Status: Beta
Brought to you by:
mabrarov
From: niXman <i.n...@gm...> - 2012-05-07 15:50:55
|
> Это "API" наподобие session::async_start/async_wait/async_stop или что-то внутреннее для расширения session? > Для внутренних частей неплохо бы обойтись без callback-ов - они добавляют сложности коду и overhead для runtime. "это" предполагается предоставить реализатору user_context`ов. т.е. как-то так: struct base_context { void read(...) {} void write(...) {} bool in_read() const; bool in_write() const; ... }; struct user_context: base_context { user_context(...) :base_context(...) { start(); } void start() { read(..., &user_context::readed, ...); } void readed(...) { // тут юзер что-то выполняет, и вызывет write(), или read() если пакет составной } }; > Не создает - да. Но session::read_state_ в in_progress устанавливает только (!) start_socket_read. > Скорее user_read должен проверять read_state_ и, если read_state_ == read_state::wait, вызывать start_socket_read. понял. > Остается неясным, кто и когда будет вызывать user_read/user_write. реализатор user_context`ов. или имеются какие-то соображения/предложения? и по поводу буферов для пользовательских данных, есть мысли? у меня, собственно говоря, есть мысль оставить буфер(а) членами session, но при помощи base_context предоставить пользователю возможность управлять/использовать/настраивать его/их. как Вы думаете? -- Regards, niXman |