Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.Coroutine and Object Inheritance
From: Carlos Ferreira (carlosmf.pt_at_[hidden])
Date: 2013-12-19 09:47:36


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_at_[hidden]> wrote:

> 2013/12/19 Carlos Ferreira <carlosmf.pt_at_[hidden]>
>
>> 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_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>

-- 
Carlos Miguel Ferreira
Researcher at Telecommunications Institute
Aveiro - Portugal
Work E-mail - cmf_at_[hidden]
Skype & GTalk -> carlosmf.pt_at_[hidden]
LinkedIn -> http://www.linkedin.com/in/carlosmferreira


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net