All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.reactivestreams.Publisher.scala Maven / Gradle / Ivy

package org.reactivestreams

/** A [[Publisher]] is a provider of a potentially unbounded number of
  * sequenced elements, publishing them according to the demand received
  * from its [[Subscriber]].
  *
  * A [[Publisher]] can serve multiple [[Subscriber Subscribers]] are
  * [[Publisher!.subscribe subscribed]] dynamically at various points in time.
  *
  * @tparam T the type of element signaled.
  */
trait Publisher[T] {
  /**
    * Request the publisher to start streaming data.
    *
    * This is a factory method and can be called multiple times, each time
    * starting a new [[Subscription]].
    *
    * Each [[Subscription]] will work for only a single [[Subscriber]].
    * A [[Subscriber]] should only subscribe once to a single [[Publisher]].
    *
    * If the [[Publisher]] rejects the subscription attempt or otherwise fails
    * it will signal the error via [[Subscriber.onError]].
    *
    * @param subscriber the [[Subscriber]] that will consume signals
    *                   from this [[Publisher]]
    */
  def subscribe(subscriber: Subscriber[_ >: T]): Unit
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy