CallHealthMonitor
class CallHealthMonitor(val call: Call, val callScope: CoroutineScope, val onIceRecoveryFailed: () -> Unit)
Monitors
Publisher and subscriber Peer connection states -> immediately reconnect
Network up/down -> mark down instantly when down. reconnect when up
Interval every 2 seconds. check and decide what to do
Calls call.reconnectOrSwitchSfu() when needed
Notes
There is a delay after a restart till connections show healthy again
So we shouldn't immediately try to reconnect if we're already reconnecting