Size: a a a

Kotlin Community

2020 August 17

AE

Alexandr Emelyanov in Kotlin Community
Alexander Nozik
В протокол я не могу вмешиваться, он определяется прибором
а, работа с железом. но там же через сокет, кто то же перекладывает из сокета в канал?
источник

AN

Alexander Nozik in Kotlin Community
Alexandr Emelyanov
а, работа с железом. но там же через сокет, кто то же перекладывает из сокета в канал?
Да, там абстракция.
источник

BV

Boris Vanin in Kotlin Community
Может быть менеджер пакетов должен это умеет
источник

AE

Alexandr Emelyanov in Kotlin Community
Alexander Nozik
Да, там абстракция.
вот в нее и можно накрутить маркер пересылки
источник

AN

Alexander Nozik in Kotlin Community
Ну там для разных приборов маркер разный. В общем, решил поверх порта сделать синхронную обертку с мутексом. Она будет контролировать синхронизацию
источник

AH

Ayrat Hudaygulov in Kotlin Community
Alexander Nozik
Вот есть у меня канал. Может ли кто-нибудь придумать простой способ, как за суспендиться пока канал не пуст? Я вижу один довольно громоздкий метод с селектами, но может просмотрел чего простой.
sealed class Msg<A>
object Nil: Msg<Nothing>
data class Cons<A>(Val msg: A): Msg<A>

Сделать обёртку, которая принимает Msg. Если пришёл Nil, закрывать канал.
На выходе вообще лучше Flow<A> отдавать
источник

AN

Alexander Nozik in Kotlin Community
Ayrat Hudaygulov
sealed class Msg<A>
object Nil: Msg<Nothing>
data class Cons<A>(Val msg: A): Msg<A>

Сделать обёртку, которая принимает Msg. Если пришёл Nil, закрывать канал.
На выходе вообще лучше Flow<A> отдавать
Задача вообще другая. Это не про разделение сообщение, а про синхронный запрос-ответ поверх асинхронного порта.
источник

AN

Alexander Nozik in Kotlin Community
Разделение кстати сделано достаточно изящно. Там Flow байтовых блоков на лету перегруппировывается во Flow сообщений
источник

AH

Ayrat Hudaygulov in Kotlin Community
Alexander Nozik
Задача вообще другая. Это не про разделение сообщение, а про синхронный запрос-ответ поверх асинхронного порта.
Посылать в канал сообщение с ответным временным каналом (созданным отправителем специально для этого сеанса) или колбеком
источник

AH

Ayrat Hudaygulov in Kotlin Community
Отправитель создаёт канал и ждёт его заполнения
Или асинхронно в лицо получает колбеком когда-нибудь)
источник

AN

Alexander Nozik in Kotlin Community
Ayrat Hudaygulov
Посылать в канал сообщение с ответным временным каналом (созданным отправителем специально для этого сеанса) или колбеком
Это уже высокоуровневая логика. Вопрос в том, как сделать синхронный запрос-ответ поверх асинхронных стримов. И вопрос чисто технический на уровне стримов. Логика все эта уже давно сделана.
источник

AN

Alexander Nozik in Kotlin Community
Я если что переписываю на корутины код, которому уже много лет, так что по логике никаких вопросов у меня нет.
источник

AN

Alexander Nozik in Kotlin Community
Вообще два одно-направленных потока вместо запрос-ответов оказались довольно изящным решением. Правда там всю логику надо делать асинхронной.
источник

AN

Alexander Nozik in Kotlin Community
О! Я придумал, как это должно быть. Надо к каждому сообщению прилагать уникальный ключ и потом на возврате этот ключ обратно отдавать. Тогда снаружи будет асинхронная логика, а внутри синхронная. Но это надо внутренний API менять.
источник

U

Unat in Kotlin Community
Господа, есть идеи куда смотреть, если у меня анализ файла в IDEA занимает 5-7 секунд? Больше всего времени уходит на этап Injected Fragments. 500 строчек кода, импортировано пара инлайн функций и есть много строковых ключей - этот класс занимается разбором портянок ключ-значение на DTO.
источник

KT

Kirill Timofeev in Kotlin Community
Unat
Господа, есть идеи куда смотреть, если у меня анализ файла в IDEA занимает 5-7 секунд? Больше всего времени уходит на этап Injected Fragments. 500 строчек кода, импортировано пара инлайн функций и есть много строковых ключей - этот класс занимается разбором портянок ключ-значение на DTO.
источник

U

Unat in Kotlin Community
Было бы у меня время и желание обращаться в техподдержку, я бы не спрашивал в чате.
источник

T

Timur in Kotlin Community
Unat
Было бы у меня время и желание обращаться в техподдержку, я бы не спрашивал в чате.
Было бы у нас время на сложные ответы за которые нам не платят и ничего нам как коммьюнити не даст, не скидывали бы ссылки на техподдержку :)
источник

U

Unat in Kotlin Community
Timur
Было бы у нас время на сложные ответы за которые нам не платят и ничего нам как коммьюнити не даст, не скидывали бы ссылки на техподдержку :)
А я рассчитывал на ответ от человека, который или уже обратился, или сам нашёл какую инспекцию отключить. На нет и суда нет.
источник

PE

Pavel Erokhin in Kotlin Community
Unat
А я рассчитывал на ответ от человека, который или уже обратился, или сам нашёл какую инспекцию отключить. На нет и суда нет.
Ну значит никто не обратился, по этому ответ вполне очевидный и ожидаемый — ссылка на репорт проблемы
источник