Yes, I know this is a different approach but I wanted to maintain a pure object model. I don't know if this is a good approach or not, but then again, I'm implementing a prototype.

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/echo_server.cpp
Yes, I noticed that but I kinda got lost when I saw that spawn(...) used stackfull coroutines but at the boost::asio::coroutine documentation, stackless coroutines were described. I wanted to ensure I was using stackfull coroutines.

2.) coroutine<> is a type holder, e.g. you have to derive from coroutine<>::push_type or coroutine<>::pull_type
I also saw that documentation and also got lost there... What is the difference between the push_type and pull_type? For what purposes should I use them?

3.) usually you would not track SimpleObj as is-a-coroutine -> I suggest to aggregate coroutine<> instead derive from it

I also though about that... I just didn't know what was the best approach. Thinking a second time pushes me to go with the approach you just described.

Thanks for the info.


On 19 December 2013 14:06, Oliver Kowalke <oliver.kowalke@gmail.com> wrote:
2013/12/19 Carlos Ferreira <carlosmf.pt@gmail.com>
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_ptr<boost::asio::ip::tcp::socket> tcpSkt_uPtr;
std::unique_ptr<boost::asio::ip::tcp::acceptor> acc_uPtr;

public:
SimpleObj(std::shared_ptr<boost::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/echo_server.cpp
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

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users



--

Carlos Miguel Ferreira
Researcher at Telecommunications Institute
Aveiro - Portugal
Work E-mail - cmf@av.it.pt
Skype & GTalk -> carlosmf.pt@gmail.com
LinkedIn -> http://www.linkedin.com/in/carlosmferreira