Hi, I have a pipeline setup all using reactive extensions, starting with a stream of values (could arrive any time they want) and then, subscribing to it there are many different "modules" outputting a stream of calculated values, and that stream is also subscribed to by another level of modules who also compute other values.
Now at the end of all this there is one class that listens to all those modules values and will output some other kind of value itself. Now in normal life the initial stream of values arrive whenever, one by one. But I also want to be able to "replay" those values and get all the outputs, but this time "as fast as possible". But I still need those values to make sense, ie, that the final output could be "retraced" to the original value that generated it. Not sure if I make sense here.
There are a few things I am considering, but none of which seem really clean.
One is to have "accelerated time". Ie have some kind of time warp and replay all, say, at 100x speed or whatever. This does have some significant drawbacks though, as in 100x speed then the time to process a value becomes much more significant.
The other one I was wondering (and leading to my question) about would be to be able to "step" all of this, ie to have a way to know when an OnNext has been fully handled by all its subscribers, so that I could just send one value in, wait for everybody to have handled it, get the corresponding output value, and then send the next one. The would have the advantage that it could basically be replayed "as fast as my computer allows".
I was wondering if there was something I was missing, somewhere, or a way to do things that I had overlooked that could easily do what I want. Failing that the only idea I could come up with was to have proxies/facades for all my classes so as to intercept every incoming and outgoing values and notify that so that my "replayer" would be able to trace it all.
I have smoked too much pot or should I switch dealers ? ... ;-)