Solve synchronization issue with streams
Fixed priority, order and synchronization of stream subscribing. The issues that caused the observed synchronization problems became clear only after refactoring:
- Raw stream events has a class implementation with
decodemethods. Before we had
dictand the dictionary structure and encode/decoding logic was owned by the
DataNodederived classes. Was important to discover stream subscribing bugs.
- Lima decoding in image URI's or images (from server of files) moved from
LimaDataViewto the streaming event class to be consistent with
StreamEventclasses containing all decoding logic. The difference with other
StreamEventclasses is that the stream data itself is not enough to do the decoding.
- Refactored the
DataNodewalk logic (reuse code that was copy/paste before). Was important to discover stream subscribing bugs.
DataNodecan now be walked. No need for
SCAN_TYPESto do something special for the scan nodes. The classes themselves contain the logic from
- Refactored the stream-reader logic (now a class instead of closure). Was important to discover stream priority bugs.
LimaImageChannelDataNodenow share the same base class
- Fixed issues with
filterwhen walking nodes
- Added more node-walking tests to
test_publishing(test walk filter for example)
Nothing has changed in the number of events published and the streams in which those are published.