Re: [Asio-samples-users] добавление API записи чтения в echo_server
Status: Beta
Brought to you by:
mabrarov
From: niXman <i.n...@gm...> - 2012-05-07 16:40:18
|
т.е. в конечном счете, я полагаю, должно получиться нечто вроде: template<typename SD> // session data struct base_context { base_context(SD& sd) :_data(sd) {} void read(...) { _data... } void write(...) { _data... } cyclic_buffer& buffer() const { return _data... } bool in_read() const { return _data... } bool in_write() const { return _data... } private: SD& _data }; /* * тут SD введен для того, что не раскрывать детали сервера. */ /***************************************************************************/ template< typename GC ,typename SD > struct user_context: base_context<SD> { user_context(GC& gc, SD& sd) :base_context<SD>(sd) { // к моменту вызова тела конструктора user_context`а, все члены и данные // session и base_context`а инициализированы. // таким образом, пользовательская логика берет начало в конструкторе, где // пользователь может вызывать read() или write(). // можно, кстати, в base_context добавить виртуальный метод start(), вызываемый сессией, // переопределив который пользователь может запускать свою логику в нем. // так же, можно добавить и метод stop(), который быдет вызываться сессией // в самом начале разрушения сессии. } }; /***************************************************************************/ http://liveworkspace.org/code/30bd677be00ff717657e52a66146bf19 интересует Ваше мнение об этом. благодарю. -- Regards, niXman |