this adds the option for ExtraQueryProviders to state that they
only wish to have their processor rerun (probably with different state),
rather than the QueryRunner rerunning both the query and the processor.
This is really useful for some ML-based providers which need to run an
extra query then transform the results, and also include interactivity
such as a slider, but don't need to rerun the query as part of the
interactivity - just the processing.
There are some downsides here, most notably the extra complexity:
the ExtraQueryProvider interface is more flexible but more complex
the SceneQueryRunner needs another subscription and
ReplaySubject in order to be able to re-send the latest
unprocessed data to the processors again
I think this will also increase memory usage?
Perhaps there's a way for me to do this using transformations instead? That might be preferable. I thought I'd submit this to get feedback though, since it's one solution.
Followup from this comment
This is really useful for some ML-based providers which need to run an extra query then transform the results, and also include interactivity such as a slider, but don't need to rerun the query as part of the interactivity - just the processing.
There are some downsides here, most notably the extra complexity:
ExtraQueryProvider
interface is more flexible but more complexSceneQueryRunner
needs another subscription andReplaySubject
in order to be able to re-send the latest unprocessed data to the processors againPerhaps there's a way for me to do this using transformations instead? That might be preferable. I thought I'd submit this to get feedback though, since it's one solution.