Size: a a a

Kotlin Community

2020 July 27

AM

Andrew Mikhaylov in Kotlin Community
Ну там разница в IllegalArgumentException / IllegalStateException, очевидно, выше проверялся стейт, а не входной параметр функции.
источник

AS

Andrey Stepankov in Kotlin Community
Andrew Mikhaylov
check, конечно, я их постоянно путаю.
Вечно путаю... =(
источник

BP

Bogdan Panchenko in Kotlin Community
Andrey Stepankov
Давно варнит?
Очень давно
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
check, конечно, я их постоянно путаю.
А я про чек и не знал, ну или забыл про него
источник

PE

Pavel Erokhin in Kotlin Community
Bogdan Panchenko
А я про чек и не знал, ну или забыл про него
+1
источник
2020 July 28

АЕ

Алексей Ершов... in Kotlin Community
Кто делал Flow-обёртку над SocketChannel? Как внятно поддержать cancellation, чтобы когда происходит cancel, закрывать channel?
источник

A

Aleksandr in Kotlin Community
Алексей Ершов
Кто делал Flow-обёртку над SocketChannel? Как внятно поддержать cancellation, чтобы когда происходит cancel, закрывать channel?
Конкретно над SocketChannel не делал оберток, но для других использовал onCompletion
источник

A

Aleksandr in Kotlin Community
Алексей Ершов
Кто делал Flow-обёртку над SocketChannel? Как внятно поддержать cancellation, чтобы когда происходит cancel, закрывать channel?
Или try..catch(CancellationException), или awaitClose. Тут нужно смотреть на саму обертку.
источник

sd

sokolov dimitrii in Kotlin Community
.catch или try catch
источник

AN

Alexander Nozik in Kotlin Community
Алексей Ершов
Кто делал Flow-обёртку над SocketChannel? Как внятно поддержать cancellation, чтобы когда происходит cancel, закрывать channel?
Там в примере для callbackFlow есть - awaitClosed или что-то в этом роде
источник

АЕ

Алексей Ершов... in Kotlin Community
Я немного не об этом говорю) по умолчанию канал блокирует поток при вызове метода чтения. Если поток заблокирован, то scope.cancel ничего с ним не сделает, а я хочу отменить текущее чтение. Получается, нужно использовать non-blocking режим чтения, и оборачивать его в cancellableCoroutine?
источник

AN

Alexander Nozik in Kotlin Community
Алексей Ершов
Я немного не об этом говорю) по умолчанию канал блокирует поток при вызове метода чтения. Если поток заблокирован, то scope.cancel ничего с ним не сделает, а я хочу отменить текущее чтение. Получается, нужно использовать non-blocking режим чтения, и оборачивать его в cancellableCoroutine?
Если все заблокировано и нет ручки на отмену (а она там все-таки есть), то ничего отменить нельзя.
источник

VP

Vladimir Petrakovich in Kotlin Community
Алексей Ершов
Я немного не об этом говорю) по умолчанию канал блокирует поток при вызове метода чтения. Если поток заблокирован, то scope.cancel ничего с ним не сделает, а я хочу отменить текущее чтение. Получается, нужно использовать non-blocking режим чтения, и оборачивать его в cancellableCoroutine?
Можно закрывать канал при отмене (а отмену ловить через suspendCancellableCoroutine).
Тогда чтение должно тут же закончиться с AsynchronousCloseException.
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Можно закрывать канал при отмене (а отмену ловить через suspendCancellableCoroutine).
Тогда чтение должно тут же закончиться с AsynchronousCloseException.
+
источник

АЕ

Алексей Ершов... in Kotlin Community
Alexander Nozik
Если все заблокировано и нет ручки на отмену (а она там все-таки есть), то ничего отменить нельзя.
В асинхронном варианте есть, а в обычном read вроде нет.
источник

AN

Alexander Nozik in Kotlin Community
Алексей Ершов
В асинхронном варианте есть, а в обычном read вроде нет.
Ну так пока буффер вычитывается, прервать это нельзя
источник

АЕ

Алексей Ершов... in Kotlin Community
Vladimir Petrakovich
Можно закрывать канал при отмене (а отмену ловить через suspendCancellableCoroutine).
Тогда чтение должно тут же закончиться с AsynchronousCloseException.
У меня сейчас просто flow{} и внутри открывается канал. Как туда впихнуть suspendCancellableCoroutine?
источник

АЕ

Алексей Ершов... in Kotlin Community
Alexander Nozik
Ну так пока буффер вычитывается, прервать это нельзя
А он ждёт пока что-то из сокета придет, и как раз хочется это ожидание прервать)
источник

AN

Alexander Nozik in Kotlin Community
Алексей Ершов
У меня сейчас просто flow{} и внутри открывается канал. Как туда впихнуть suspendCancellableCoroutine?
Вы можете проверку завершения корутины между вычиткой буферов сделать
источник

АЕ

Алексей Ершов... in Kotlin Community
Между - понятное дело, делаю, ensureActive. Но основное время все-таки проходит в блоке, в ожидании байтиков из сокета.
источник