2013/12/19 Carlos Ferreira
Hello to all.
I need some help using the Boost.Coroutine lib. I wanted to use the coroutines as objects and for that, I tried to build a simple object and inherit the boost::coroutines::coroutine template.
ex:
class SimpleObj : public boost::coroutines::coroutine<SimpleObj>{ private: std::unique_ptrboost::asio::ip::tcp::socket tcpSkt_uPtr; std::unique_ptrboost::asio::ip::tcp::acceptor acc_uPtr;
public: SimpleObj(std::shared_ptrboost::asio::io_service ioService_ptr, boost::asio::ip::tcp::endpoint &endPoint); ~SimpleObj(); void run(); };
Is this right? Can I actually inherit from the boost::coroutines::coroutine template ? If yes, how can I proceed from here, to use the run() object method as the coroutine itself, with an io_service provided through the constructor ?
1.) do you know that boost.asio integrates boost.coroutine? example can be read at http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/example/cpp03/spawn... 2.) coroutine<> is a type holder, e.g. you have to derive from coroutine<>::push_type or coroutine<>::pull_type 3.) usually you would not track SimpleObj as is-a-coroutine -> I suggest to aggregate coroutine<> instead derive from it