Size: a a a

2020 February 25

VP

Vladimir Petrakovich in Kotlin JVM
Кирилл
Кто-нибудь знает почему я получаю экзепшн при закрытии веб сокета? Это весь его код на сервере, взят из примера с доков
Потому что receive() кидает исключение, если канал уже закрыт 🤷‍♂️
источник

К

Кирилл in Kotlin JVM
Понятно зачем там try/finally
источник

AT

Alexey Tkachenko in Kotlin JVM
в общем, можно сказать, что оно работает, хотя решение спорное, конечно
источник

VP

Vladimir Petrakovich in Kotlin JVM
Ну если завершение вебсокетной сессии с исключением, свидетельствующем о кривом коде - это "работает", то да)
источник

AT

Alexey Tkachenko in Kotlin JVM
я и говорю — спорное весьма
источник

AT

Alexey Tkachenko in Kotlin JVM
но можно подавить исключение, никто и не узнает ничего 😊
источник

U

Unat in Kotlin JVM
Господа, есть нужда дождаться отмены корутины. Решение "в лоб" -
try {
 while(isActive) {
   delay(1000)
 }
} finally {
 callback(...)
}

И мне кажется, что должен быть механизм получше.
источник

AT

Alexey Tkachenko in Kotlin JVM
job.join()?
источник

U

Unat in Kotlin JVM
Это когда ты снаружи
источник

U

Unat in Kotlin JVM
а мне надо изнутри suspend-функции
источник

U

Unat in Kotlin JVM
что-то вроде awaitClose {} у Flow
источник

U

Unat in Kotlin JVM
(кажется, только у callbackFlow)
источник

VB

Viacheslav Blinov in Kotlin JVM
Unat
Господа, есть нужда дождаться отмены корутины. Решение "в лоб" -
try {
 while(isActive) {
   delay(1000)
 }
} finally {
 callback(...)
}

И мне кажется, что должен быть механизм получше.
можно написать свой оператор через suspendCancellableCoroutine через  коллбек, наверное?
источник

VP

Vladimir Petrakovich in Kotlin JVM
Unat
а мне надо изнутри suspend-функции
Так надо навесить коллбек на отмену или что?
источник

VP

Vladimir Petrakovich in Kotlin JVM
try-finally так-то замечательный механизм
источник

AM

Andrew Mikhaylov in Kotlin JVM
Там doOnCompletion у джобы есть, ЕМНИП, можно его с CompletableDeferred использовать по идее.
источник

D

Danil Yudov in Kotlin JVM
invokeOnCompletion
источник

AM

Andrew Mikhaylov in Kotlin JVM
Точно.
источник

U

Unat in Kotlin JVM
Мне надо заюзать синхронную либу со всякими колбеками и своим состоянием внутри корутины, но "в конце" обязательно надо подчистить ресурсы.
источник

VB

Viacheslav Blinov in Kotlin JVM
Unat
Мне надо заюзать синхронную либу со всякими колбеками и своим состоянием внутри корутины, но "в конце" обязательно надо подчистить ресурсы.
тогда вам 100% нужен suspendCancellableCoroutine
источник