# Flow.Processor

Added in[API level 30](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

# Processor

```
interface Processor<T : Any!, R : Any!> : Flow.Publisher<R>, Flow.Subscriber<T>
```

|----------------------------------------------------------------------------------------------------------------------------|
| [java.util.concurrent.Flow.Processor](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Processor#) |

A component that acts as both a Subscriber and Publisher.

## Summary

| Inherited functions ||
|---|---|
| From class[Subscriber](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Subscriber) |------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [onComplete](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Subscriber#onComplete())`()` <br /> Method invoked when it is known that no additional Subscriber method invocations will occur for a Subscription that is not already terminated by error, after which no other Subscriber methods are invoked by the Subscription. If this method throws an exception, resulting behavior is undefined. <br />                                                                                                                                                                                                              | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [onError](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Subscriber#onError(kotlin.Throwable))`(`throwable:` `[Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)!`)` <br /> Method invoked upon an unrecoverable error encountered by a Publisher or Subscription, after which no other Subscriber methods are invoked by the Subscription. If this method itself throws an exception, resulting behavior is undefined. <br />                                                                                                                                                        | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [onNext](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Subscriber#onNext(java.util.concurrent.Flow.Subscriber.T))`(`item:` `T`)` <br /> Method invoked with a Subscription's next item. If this method throws an exception, resulting behavior is not guaranteed, but may cause the Subscription to be cancelled. <br />                                                                                                                                                                                                                                                                                                 | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [onSubscribe](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Subscriber#onSubscribe(java.util.concurrent.Flow.Subscription))`(`subscription:` `[Flow.Subscription](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Subscription)!`)` <br /> Method invoked prior to invoking any other Subscriber methods for the given Subscription. If this method throws an exception, resulting behavior is not guaranteed, but may cause the Subscription not to be established or to be cancelled. Typically, implementations of this method invoke`subscription.request`to enable receiving items. <br /> | ||
| From class[Publisher](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Publisher) |------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [subscribe](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Publisher#subscribe(java.util.concurrent.Flow.Subscriber))`(`subscriber:` `[Flow.Subscriber](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Subscriber)<in` `T>!`)` <br /> Adds the given Subscriber if possible. If already subscribed, or the attempt to subscribe fails due to policy violations or errors, the Subscriber's`onError`method is invoked with an[IllegalStateException](https://developer.android.com/reference/kotlin/java/lang/IllegalStateException.html#). Otherwise, the Subscriber's`onSubscribe`method is invoked with a new[Subscription](https://developer.android.com/reference/kotlin/java/util/concurrent/Flow.Subscription). Subscribers may enable receiving items by invoking the`request`method of this Subscription, and may unsubscribe by invoking its`cancel`method. <br /> | ||