我想要一个行为类似XStream Stream
的协程频道
send
始终保持无障碍状态我找到的最接近的是ConflatedBroadcastChannel,但是它“记住”了使其成为XStream MemoryStream的最后一个值。
是否有一种变通方法来获取我的确切语义?
答案 0 :(得分:1)
不,没有这样的渠道,随时欢迎create an issue。
您可以使用的最接近的解决方法是在ConflatedBroadcastChannel
上提供扩展名,该扩展名将丢弃现有元素:
fun <T> ConflatedBroadcastChannel<T>.subscription(): ReceiveChannel<T> {
val subscription = openSubscription()
subscription.poll()
return subscription
}
从使用者的角度来看,此订阅与XStream
具有相同的语义,但是不符合“没有缓冲区”部分:已发送的元素将保留在内存中(〜不能为垃圾回收),直到调用下一个send
。