Example of building async active object

Here's more complex example of building communicating objects on the top of boost::asio (Boost C++ Libraries). https://sourceforge.net/projects/asio-samples/ (the most complete projects are "nmea_client" and "echo_server"). The main concept of the described method is creation of active objects tied to boost::asio::io_service (where theirs activity is done by means of working threads tied to io_service::run method) with asio-like communication interface:

template <typename Handler>
void async_do_something(operation_parameters, Handler handler) {...}

or even (see ma::nmea::cyclic_read_session::async_read_some):

template <typename Handler, typename Data>
void async_do_something(Data data, Handler handler) {...}

The central point of the suggested method is ma::handler_storage class which is used for handler's "parking" until the active method's execution flow completes. Also ma::handler_storage helps to decouple header files from cpp-files which in theory must help with compilation time reduction.

Edit | Attach | Print version | History: r21 | r19 < r18 < r17 < r16 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r17 - 03 Dec 2010 - 17:39:36 - MaratAbrarov?
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback