@@ -2,18 +2,18 @@ package dev.silenium.libs.flows.buffer
2
2
3
3
import dev.silenium.libs.flows.api.FlowItem
4
4
import dev.silenium.libs.flows.api.Sink
5
- import kotlinx.coroutines.flow.MutableStateFlow
6
- import kotlinx.coroutines.flow.StateFlow
7
- import kotlinx.coroutines.flow.asStateFlow
5
+ import kotlinx.coroutines.flow.MutableSharedFlow
6
+ import kotlinx.coroutines.flow.SharedFlow
7
+ import kotlinx.coroutines.flow.asSharedFlow
8
8
9
9
class BufferSink <T , P >(vararg pads : Pair <UInt , P >) : Sink<T, P> {
10
10
private val inputMetadata_: MutableMap <UInt , P ?> = pads.toMap().toMutableMap()
11
11
override val inputMetadata: Map <UInt , P ?> by ::inputMetadata_
12
12
13
13
private val buffer_: MutableMap <UInt , MutableList <FlowItem <T , P >>> = mutableMapOf ()
14
14
val buffer: Map <UInt , List <FlowItem <T , P >>> by ::buffer_
15
- private val flow_ = MutableStateFlow <Map <UInt , List <FlowItem <T , P >>>>(emptyMap() )
16
- val flow: StateFlow <Map <UInt , List <FlowItem <T , P >>>> = flow_.asStateFlow ()
15
+ private val flow_ = MutableSharedFlow <Map <UInt , List <FlowItem <T , P >>>>(replay = 1 )
16
+ val flow: SharedFlow <Map <UInt , List <FlowItem <T , P >>>> = flow_.asSharedFlow ()
17
17
18
18
override suspend fun receive (item : FlowItem <T , P >): Result <Unit > {
19
19
buffer_.getOrPut(item.pad, ::mutableListOf).add(item)
0 commit comments