Size: a a a

Kotlin Community

2020 May 07

AN

Alexander Nozik in Kotlin Community
Roman Elizarov
Ну там всё просто. Он как канал с буфером. Засыпает когда буфер переполнился. Убирает из буфера когда все подписчики забрали.
Я понял. Просто обращаю внимание на то, что в доке этого нет. Не у всех же Елизаров в чате. Сейчас напишу issue
источник

I

Ivansuper in Kotlin Community
Мне кажется это совершенно не то, о чем человек просил в любом случае. Тут надо заранее будет знать число подписчиков, это раз, два — когда данные начнут потребляться, возникнет сдвиговый эффект внутри канала и получится очередь?
источник

RE

Roman Elizarov in Kotlin Community
Да я всё сплю и вижу его задепрекейтить (ну удалять-то конечно не будем — уже много народу использует). Сейчас как раз работаем над flow sharing. Там будет более обширная конфигурация и будет покрыто намного больше всяких экзотических случаев. Вроде пока удается полностью покрыть всё что делают всё BroadcastChannels и еще кучу всего сверху.
источник

AN

Alexander Nozik in Kotlin Community
Roman Elizarov
Да я всё сплю и вижу его задепрекейтить (ну удалять-то конечно не будем — уже много народу использует). Сейчас как раз работаем над flow sharing. Там будет более обширная конфигурация и будет покрыто намного больше всяких экзотических случаев. Вроде пока удается полностью покрыть всё что делают всё BroadcastChannels и еще кучу всего сверху.
Интересно.
источник

AN

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

AN

Alexander Nozik in Kotlin Community
источник

Y

Yanis in Kotlin Community
Ivansuper
Мне кажется это совершенно не то, о чем человек просил в любом случае. Тут надо заранее будет знать число подписчиков, это раз, два — когда данные начнут потребляться, возникнет сдвиговый эффект внутри канала и получится очередь?
Да, число подписчиков может быть разным.
Получается я не смогу реализовать то что мне нужно?
источник

AN

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

I

Ivansuper in Kotlin Community
Yanis
Да, число подписчиков может быть разным.
Получается я не смогу реализовать то что мне нужно?
Мне кажется тебе надо какой-то враппер вокруг канала делать. Т.е. я не помню подобного функционала из коробки
источник

AN

Alexander Nozik in Kotlin Community
Или хранить определенное время или определенное количество элементов (это как раз вариант, что Роман предложил)
источник

Y

Yanis in Kotlin Community
ждать нужно пока все кто подписан не обработают данные
источник

Y

Yanis in Kotlin Community
обычный foreach по всем подписчикам
источник

I

Ivansuper in Kotlin Community
Yanis
ждать нужно пока все кто подписан не обработают данные
Тебе нужна тут совместимость с АПИ каналов? Если нет, создай свой объект, который будет работать под нужным поведением
источник

I

Ivansuper in Kotlin Community
Там тебе надо будет внутри сделать подобие семафора
источник

Y

Yanis in Kotlin Community
я в итоге хочу получить flow и его возможности, подписчиками будут flow.collect()
источник

I

Ivansuper in Kotlin Community
Так тебе горячо или холодно надо?
источник

Y

Yanis in Kotlin Community
получается горячо
источник

Y

Yanis in Kotlin Community
потому я сразу и делал conflated, чтобы было последнее значение
источник

I

Ivansuper in Kotlin Community
Ну жди ответов по готовым решениям из библиотеки Котлина. Я подходящих не знаю. Но спроектировать что-то такое локальное не очень тяжело
источник

I

Ivansuper in Kotlin Community
Иногда проще не постыдиться и написать "велосипед", чем на столько сильно расширять существующее, чтобы получить в итоге монстра
источник