AeroToss: убран хард релоуд discovery
- Убран авто-пересканирование каждые 5 сек (вызывало hard reload) - TcpDiscovery уже отправляет broadcast каждую 1 секунду - Устройства обновляются автоматически без перезапуска discovery - Кнопка 'Обновить' делает полный перезапуск только по нажатию
This commit is contained in:
@@ -4,7 +4,6 @@ import com.aerotoss.discovery.DiscoveryManager
|
||||
import com.aerotoss.model.Device
|
||||
import com.aerotoss.model.TransferProgress
|
||||
import com.aerotoss.transfer.TransferManager
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import java.io.File
|
||||
|
||||
@@ -19,34 +18,14 @@ class AeroTossManager(
|
||||
val serverPort: Int
|
||||
get() = transfer.getServerPort()
|
||||
|
||||
private val scope = CoroutineScope(Dispatchers.Default + SupervisorJob())
|
||||
private var autoScanJob: Job? = null
|
||||
|
||||
fun start(serverPort: Int) {
|
||||
discovery.startDiscovery(serverPort)
|
||||
startAutoScan()
|
||||
}
|
||||
|
||||
private fun startAutoScan() {
|
||||
autoScanJob?.cancel()
|
||||
autoScanJob = scope.launch {
|
||||
while (isActive) {
|
||||
delay(5_000)
|
||||
val port = transfer.getServerPort()
|
||||
if (port > 0) {
|
||||
discovery.stopDiscovery()
|
||||
discovery.startDiscovery(port)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun rescan() {
|
||||
autoScanJob?.cancel()
|
||||
val port = transfer.getServerPort()
|
||||
discovery.stopDiscovery()
|
||||
discovery.startDiscovery(port)
|
||||
startAutoScan()
|
||||
}
|
||||
|
||||
suspend fun sendFile(file: File, target: Device): Flow<TransferProgress> {
|
||||
@@ -59,13 +38,10 @@ class AeroTossManager(
|
||||
}
|
||||
|
||||
fun stop() {
|
||||
autoScanJob?.cancel()
|
||||
discovery.stopDiscovery()
|
||||
}
|
||||
|
||||
fun dispose() {
|
||||
autoScanJob?.cancel()
|
||||
scope.cancel()
|
||||
discovery.dispose()
|
||||
transfer.dispose()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user