rx.lang.scala.subjects

ReplaySubject

Related Docs: class ReplaySubject | package subjects

object ReplaySubject

Subject that buffers all items it observes and replays them to any Observer that subscribes.

Example:
  1. val subject = ReplaySubject[String]()
    subject.onNext("one")
    subject.onNext("two")
    subject.onNext("three")
    subject.onCompleted()
    
    // both of the following will get the onNext/onCompleted calls from above
    subject.subscribe(observer1)
    subject.subscribe(observer2)
Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. ReplaySubject
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

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. def apply[T](capacity: Int): ReplaySubject[T]

    Creates an unbounded replay subject with the specified initial buffer capacity.

    Creates an unbounded replay subject with the specified initial buffer capacity.

    Use this method to avoid excessive array reallocation while the internal buffer grows to accomodate new items. For example, if you know that the buffer will hold 32k items, you can ask the ReplaySubject to preallocate its internal array with a capacity to hold that many items. Once the items start to arrive, the internal array won't need to grow, creating less garbage and no overhead due to frequent array-copying.

    capacity

    the initial buffer capacity

    returns

    the created subject

  5. def apply[T](): ReplaySubject[T]

    Creates an unbounded replay subject.

    Creates an unbounded replay subject.

    The internal buffer is backed by an ArrayList and starts with an initial capacity of 16. Once the number of items reaches this capacity, it will grow as necessary (usually by 50%). However, as the number of items grows, this causes frequent array reallocation and copying, and may hurt performance and latency. This can be avoided with the apply(Int) overload which takes an initial capacity parameter and can be tuned to reduce the array reallocation frequency as needed.

    returns

    the created subject

  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  12. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  13. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  15. final def notify(): Unit

    Definition Classes
    AnyRef
  16. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  17. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  18. def toString(): String

    Definition Classes
    AnyRef → Any
  19. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. def withSize[T](size: Int): ReplaySubject[T]

    Creates a size-bounded replay subject.

    Creates a size-bounded replay subject.

    In this setting, the ReplaySubject holds at most size items in its internal buffer and discards the oldest item.

    When observers subscribe to a terminated ReplaySubject, they are guaranteed to see at most size onNext events followed by a termination event.

    If an observer subscribes while the ReplaySubject is active, it will observe all items in the buffer at that point in time and each item observed afterwards, even if the buffer evicts items due to the size constraint in the mean time. In other words, once an Observer subscribes, it will receive items without gaps in the sequence.

    size

    the maximum number of buffered items

    returns

    the created subject

  23. def withTime[T](time: Duration, scheduler: Scheduler): ReplaySubject[T]

    Creates a time-bounded replay subject.

    Creates a time-bounded replay subject.

    In this setting, the ReplaySubject internally tags each observed item with a timestamp value supplied by the Scheduler and keeps only those whose age is less than the supplied time value converted to milliseconds. For example, an item arrives at T=0 and the max age is set to 5; at T>=5 this first item is then evicted by any subsequent item or termination event, leaving the buffer empty.

    Once the subject is terminated, observers subscribing to it will receive items that remained in the buffer after the terminal event, regardless of their age.

    If an observer subscribes while the ReplaySubject is active, it will observe only those items from within the buffer that have an age less than the specified time, and each item observed thereafter, even if the buffer evicts items due to the time constraint in the mean time. In other words, once an observer subscribes, it observes items without gaps in the sequence except for any outdated items at the beginning of the sequence.

    Note that terminal notifications onError and onCompleted trigger eviction as well. For example, with a max age of 5, the first item is observed at T=0, then an onCompleted notification arrives at T=10. If an observer subscribes at T=11, it will find an empty ReplaySubject with just an onCompleted notification.

    time

    the maximum age of the contained items

    scheduler

    the Scheduler that provides the current time

    returns

    the created subject

  24. def withTimeAndSize[T](time: Duration, size: Int, scheduler: Scheduler): ReplaySubject[T]

    Creates a time- and size-bounded replay subject.

    Creates a time- and size-bounded replay subject.

    In this setting, the ReplaySubject internally tags each received item with a timestamp value supplied by the Scheduler and holds at most size items in its internal buffer. It evicts items from the start of the buffer if their age becomes less-than or equal to the supplied age in milliseconds or the buffer reaches its size limit.

    When observers subscribe to a terminated ReplaySubject, they observe the items that remained in the buffer after the terminal notification, regardless of their age, but at most size items.

    If an observer subscribes while the ReplaySubject is active, it will observe only those items from within the buffer that have age less than the specified time and each subsequent item, even if the buffer evicts items due to the time constraint in the mean time. In other words, once an observer subscribes, it observes items without gaps in the sequence except for the outdated items at the beginning of the sequence.

    Note that terminal notifications (onError and onCompleted) trigger eviction as well. For example, with a max age of 5, the first item is observed at T=0, then an onCompleted notification arrives at T=10. If an observer subscribes at T=11, it will find an empty ReplaySubject with just an onCompleted notification.

    time

    the maximum age of the contained items

    size

    the maximum number of buffered items

    scheduler

    the Scheduler that provides the current time

    returns

    the created subject

Inherited from AnyRef

Inherited from Any

Ungrouped