Document retained router resources and shared session close acknowledgments

This commit is contained in:
evgeny committed 2026-10-29 13:34:23 +01:00
1 parent 774dc10d84
commit bc6ca78ce8
2 files changed
+27 -2

No files matched your search

+10 -2
View File
@@ -515,10 +515,18 @@ wake lock, токенов, foreground/stopSelf. Video подтверждает R
Отказ поста или join оставляет stop повторяемым. Отмена Deferred не снимает владельцев.
Audio stop ждёт каждый worker до 250 мс за попытку; playback включает join reporter.
Живые workers и устройства с отказавшим release остаются у движка, native audio stop
откладывается до завершения потоков, освобождения устройств, communication listener
и восстановления собственного аудиорежима. Незавершённая очистка бросает ошибку сервису;
откладывается до завершения потоков, освобождения устройств, communication listener,
router и восстановления собственного аудиорежима. Незавершённая очистка бросает ошибку сервису;
новый start сначала обязан завершить прежний stop. Проверка состояния/настройка нового
AudioRecord/AudioTrack выполняется после сохранения владельца для rollback.
Router сохраняет callback/proxy до успешного unregister/close, собственные глобальные
заявки communication device/SCO — до подтверждённого снятия. Отказ одной операции не
прерывает другие. Process-ссылка и main Handler повторяют очистку через 250 мс..30 с;
отказ post сохраняет владельца для явного stop/start. Поздние Bluetooth proxy после stop
получают тот же контракт освобождения, не меняя новый активный маршрут. До доставки
callback принятый getProfileProxy не даёт router объект, который можно закрыть.
Общая MediaAudioSession при close блокирует новых потребителей и оставляет executor
до подтверждённой очистки hardware/router; отказ допускает повторный close.
Перед `NativeLib.stop/restart/destroy` проверяется подтверждение очистки сервиса и
окончание подготовки чужого media; ошибка блокирует native stop. Новый звонок
нового ядра разрешается после `SERVICE_STARTED`.
+17
View File
@@ -235,6 +235,23 @@ feed/pull workers и маршрутом Android Telecom; DSP и сетевой
Вызовы lifecycle DSP выполняются после остановки его внешних feed/pull callers.
Контракты PCM/PTS: `src/call/call_audio.h`, `src/radio/radio_audio.h`, `jni_bridge/android_jni_bridge.h`.
`CallAudioRouter` сохраняет device callback и каждый полученный Bluetooth proxy до
успешного unregister/close. stop инвалидирует callbacks и снимки устройств сразу,
очищает независимые ресурсы и бросает ошибку при неподтверждённом результате.
Собственные communication device/SCO-заявки отмечаются до API и снимаются отдельно;
перед передачей в Telecom глобальный маршрут должен быть освобождён. Повтор start
сначала завершает прежнюю очистку, сохраняя заранее настроенную Telecom Connection.
Отказы удерживаются process-ссылкой; Handler повторяет очистку через 250 мс..30 с.
При отказе Handler владелец сохраняется для явного stop/start. Принятый запрос
getProfileProxy ожидает callback; поздний proxy после stop также получает владельца
и повтор close при ошибке. При активном новом маршруте очищаются лишь старые proxy.
Дубликат callback освобождённого/заменённого proxy не делает его текущим снова.
`MediaAudioSession.close` требует отсутствия потребителей и сразу запрещает новые
подписки, outputs и refresh. Hardware и router очищаются независимо; ошибка оставляет
close повторяемым и сохраняет executor до подтверждения обеих частей. Пока close
не завершён, awaitIdle также отвергает передачу ресурсов звонку.
`RadioCallController` на main управляет адресным приглашением участника в обычную
рацию канала. Это отдельный сигналинг `src/radio/radio_call.h`, без отдельного
аудиозвонка. START резервирует busy до первого события ядра: быстрое повторное