-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
FlowCollector.kt
31 lines (25 loc) · 1.04 KB
/
FlowCollector.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
* Copyright 2016-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
package kotlinx.coroutines.flow
/**
* [FlowCollector] is used as an intermediate or a terminal collector of the flow and represents
* an entity that accepts values emitted by the [Flow].
*
* This interface should usually not be implemented directly, but rather used as a receiver in a [flow] builder when implementing a custom operator.
* Implementations of this interface are not thread-safe.
*/
public interface FlowCollector<in T> {
/**
* Collects the value emitted by the upstream.
* This method is not thread-safe and should not be invoked concurrently.
*/
public suspend fun emit(value: T)
}
// Name TBD
// Contracts: exception transparency preservation, context transparency preservation, isFromDownstream
public interface SafeCollector<in T> : FlowCollector<T> {
public fun Throwable.isFromDownstream(): Boolean
@Deprecated(message = "", level = DeprecationLevel.HIDDEN)
public fun doNotImplementMe()
}