-
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
- need to start working on a basic UI that can connect everything, figure out how an index page could auto-generate when the application starts (i.e. punches in port numbers and hostnames) or otherwise retrieve those necessary parameters and communicate back with the app or be launched from a browser (should spawning a browser happen automatically?)
- the app could JIT the index page (or just implement the "/ui" GET request)
- need to figure out the "external app" api
- need to figure out viability of loading another python file and loading their functions + whole program, does another
python
invocation make more sense?
- JSON config for the application?
- try out https://github.com/pyston/pyston
- support https://docs.python.org/3/library/xmlrpc.html commanding
- maybe registries should be cached to disk?
- there should be feedback on the relationship between rates, most specifically rates of telem and the ticker speed
A channel has a desired rate and encodes a primitive. An "emit" function checks a last-emitted with the calling parameter's argument (a queue to put the channel value in, and the current time) and either adds it or not, updating the "last emitted" time if necessary.
The caller gather's up all the channels on that iteration and builds frames, where the frames are packed arbitrarily but the decoder / receiver can understand the set of contained channels and the data within by being told each channel ID up front (monotonically increasing integer, maybe 32-bit).
Frames should be UDP
A frame itself should have one timestamp, this means that all channels are aliased to the emit-eval pass. Frames should respect the MTU.
It should be possible for all N channels to be split among M time-keeping aggregators/streamers to avoid a single-threaded load.
One entity could sink all of the N emitters to produce one coherent outgoing stream, which would use it's own sequence number since the N -> 1 stream down-selection would require that
Control server and stream server, control owns channel defs, enums, session ID (if you restarted the program) and sends this info + allows asynch queries
Frame builder just consumes channel data until curr channel add goes outside MTU, then starts new frame, puts these in a frame queue