Move functionallity which is not related to the 'accelerator' concept into a separate library
According to https://stackoverflow.com/a/890269/1599887 there are no lockfree circular buffers around which solves the "blocking writer by readers" problem .. which this one does ... so possibly there is interest to reuse the buffer
All components which don't rely on accelerator-specifics should be moved into a separate project. So there would be:
- circular acquisition buffer (bare functionality)
- circular acquisition buffer for accelerator devices (extension with accelerator specifies)
Most likely, many cab
classes could be extended with accelerator/timing specifics by the future cabad
The whole DataReadyManager
stuff, used to notify for multiple buffers at once, should not be inside cab
. cab
should just support a very basic client notification. E.g. some method is called whenever a new window is ready.
cap
should only have a single mode, which notifies clients, whenever any new data was pushed. For that, cap
does not need to support the concept of MetaData
.
Note: possibly call it lcab, aka lockfree-cab, in case we don't need any locks inside.