Removal of "CircularBufferDual" to simplify Implementation
Having sub-classes of CircularBufferBase
per number of template parameters only was introduced because it is not possible to send an array of type struct via FESA/CMW. (Each sample would need to be copied to a new buffer)
The aim of this issue is, to check what would be the performance impact on the FESA side if we would not use "CircularBufferDual" anymore, and instead just "CircularBuffer" with a struct (double, double)
as containing type.
If that performance impact is negligible for our most heavy use-case[1], then "CircularBufferDual" shall be dropped. Most likely, CircularBuffer
and CircularBufferBase
could be merged in that case.
CircularBufferManager
could use the same Template-Type as the underlying buffer. It could provide push methods on its own, so we would not need to expose the real buffer to the user anymore.
[1] heavy use-case to consider:
- FESA class which provides 25x
Nomen:ChannelName@10kHz
in update rates 1Hz, 10Hz and 25Hz - clients subscribing to each of these channels for update rates 1Hz and 25Hz