Concurrent frame-scrubbing multiplexing webcam gateway daemon.
Devoted service to stream doorcam and spacecam to Bricodash and public gateway, respectively, while tracking activity and performance of these and other webcams at the space. Will be more efficient and reliable than spawning PHP and Python processes on an as-they-come basis.
Written in Elixir, will be taking advantage of various new features of the language, building on the strengths of Erlang/OTP, including
Mint (web client),
GenStage (backpressure event pipelines) and ultimately
mix release (build-time deployment packaging).
Current project plan:
SnapSource => Broadcast => unit tests
- snapsource ought to ignore demand and just cycle over camera snaps
- tests ought to max_demand equal to test sizes
- clear up extraneous poor folx's debugging
- consumer-producer to handle broadcast
Flesh out Pipelines Further
- auto-flush final buffer (small size) when backed up
- catch dead cameras rather than erroring out repeatedly
- consumer-producer to check for bad frames
- consumer to flush and track quality
- web consumer as Task
- web consumer poolboy
- implement stream as snapshot flipshow
- ensure recovery when flipshow fails
- reimplement stream to consume source stream
- ensure recovery when source stream fails
- provide for throwing timeouts
- implement greytoss checking
- configure to launch as daemon
- bootstrap to obtain dependencies and compile cold
- incorporate sous veil / swap out PHP touch points
- incorporate upt chk / swap out Python CGI touch point
- investigate periodic multi-hit events: server severing connections prematurely? badly behaved client device?
- investigate specific issue of pishop launch causing multi-hit failures on all other clients