Re: Updated dataflow semantics for RTT

Peter Soetens <[email protected]> Fri, 25 Sep 2015 21:49:01 +0200
Newsgroups gmane.science.robotics.orocos.devel
Message-ID <CAMYDobVc9n3=UVpgducd2GHjWJRE3_DZ+hRbyQFN3He+xQvi_w@mail.gmail.com>
On Fri, Sep 25, 2015 at 6:24 PM, Sylvain Joyeux <[email protected]> wrote:
>
> Hi Johannes
>
> > To me, this calls for having different behaviours for data object and
> > buffer objects: one data object per input port and one buffer per
> > channel. In all cases. It would actually both fix the bug you describe
> > above *and* keep mixed-policy behaviour as well as keep buffer setup
> > feasible (since sizing buffers is meaningful only on a per-connection
> > basis).
>
> I did not get any comment from you about this ... It concerns me as my
> current understanding is that by fixing RTT for your use case, you
> would basically fundamentally break it for mine ...

It doesn't fix the out-of-order bug for the buffer-per-channel case.
You can still starve
a certain channel and get old data much later. That's why we propose
to change the
default. This starving already happens in very simple/clean setups,
unless you start
to round-robin all the channels. But again, this does not prevent
out-of-order arrivals.

I prefer the proposed solution since the default policy leads to a
much more predictable
data flow. For appropriately sizing buffers for push channels in
multi-rate component systems,
we thought about it to specify on the input port level the buffer size
(there is already a
default conn policy for each input port). A code generator like orogen
could easily calculate
the largest buffer size required between components and inform the
input port, or stick to
pull connections.

I would definately not 'imply' different behaviours depending on
buffer/data. After
all, a data object is just a circular buffer of size 1.

Peter
-- 
Orocos-Dev mailing list
[email protected]
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev