Packages

trait BufferedSubscriber[-T] extends Subscriber[T]

Interface describing Observer wrappers that are thread-safe (can receive concurrent events) and that return an immediate Continue when receiving onNext events. Meant to be used by data sources that cannot uphold the no-concurrent events and the back-pressure related requirements (i.e. data-sources that cannot wait on Future[Continue] for sending the next event).

Implementations of this interface have the following contract:

  • onNext / onError / onComplete of this interface MAY be called concurrently
  • onNext SHOULD return an immediate Continue, as long as the buffer is not full and the underlying observer hasn't signaled Stop (N.B. due to the asynchronous nature, Stop signaled by the underlying observer may be noticed later, so implementations of this interface make no guarantee about queued events - which could be generated, queued and dropped on the floor later)
  • onNext MUST return an immediate Stop result, after it notices that the underlying observer signaled Stop (due to the asynchronous nature of observers, this may happen later and queued events might get dropped on the floor)
  • in general the contract for the underlying Observer is fully respected (grammar, non-concurrent notifications, etc...)
  • when the underlying observer canceled (by returning Stop), or when a concurrent upstream data source triggered an error, this SHOULD eventually be noticed and acted upon
  • as long as the buffer isn't full and the underlying observer isn't Stop, then implementations of this interface SHOULD not lose events in the process
  • the buffer MAY BE either unbounded or bounded, in case of bounded buffers, then an appropriate overflowStrategy needs to be set for when the buffer overflows - either an onError triggered in the underlying observer coupled with a Stop signaled to the upstream data sources, or dropping events from the head or the tail of the queue, or attempting to apply back-pressure, etc...

See OverflowStrategy for the buffer policies available.

Source
BufferedSubscriber.scala
Linear Supertypes
Subscriber[T], Observer[T], Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. BufferedSubscriber
  2. Subscriber
  3. Observer
  4. Serializable
  5. Serializable
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def onComplete(): Unit
    Definition Classes
    Observer
  2. abstract def onError(ex: Throwable): Unit
    Definition Classes
    Observer
  3. abstract def onNext(elem: T): Future[Ack]
    Definition Classes
    Observer
  4. implicit abstract def scheduler: Scheduler
    Definition Classes
    Subscriber

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
  15. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Subscriber[T]

Inherited from Observer[T]

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped