final class ConnectableSubscriber[-T] extends Subscriber[T]
Wraps a Subscriber into an implementation that abstains from emitting items until the call
to connect()
happens. Prior to connect()
you can enqueue
events for delivery once connect()
happens, but before any items
emitted by onNext
/ onComplete
and onError
.
Example:
val out = ConnectableSubscriber(subscriber) // schedule onNext event, after connect() out.onNext("c") // schedule event "a" to be emitted first out.pushFirst("a") // schedule event "b" to be emitted second out.pushFirst("b") // underlying observer now gets events "a", "b", "c" in order out.connect()
Example of an observer ended in error:
val out = ConnectableSubscriber(subscriber) // schedule onNext event, after connect() out.onNext("c") out.pushFirst("a") // event "a" to be emitted first out.pushFirst("b") // event "b" to be emitted second // schedule an onError sent downstream, once connect() // happens, but after "a" and "b" out.pushError(new RuntimeException()) // underlying observer receives ... // onNext("a") -> onNext("b") -> onError(RuntimeException) out.connect() // NOTE: that onNext("c") never happens
- Self Type
- ConnectableSubscriber[T]
- Source
- ConnectableSubscriber.scala
- Alphabetic
- By Inheritance
- ConnectableSubscriber
- Subscriber
- Observer
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
connect(): CancelableFuture[Ack]
Connects the underling observer to the upstream publisher.
Connects the underling observer to the upstream publisher.
This function should be idempotent. Calling it multiple times should have the same effect as calling it once.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
onComplete(): Unit
The Subscriber.onComplete method that pushes the complete event to the underlying observer.
The Subscriber.onComplete method that pushes the complete event to the underlying observer.
It will wait for connect to happen and the queue of scheduled events to be drained.
- Definition Classes
- ConnectableSubscriber → Observer
-
def
onError(ex: Throwable): Unit
The Subscriber.onError method that pushes an error event to the underlying observer.
The Subscriber.onError method that pushes an error event to the underlying observer.
It will wait for connect to happen and the queue of scheduled events to be drained.
- Definition Classes
- ConnectableSubscriber → Observer
-
def
onNext(elem: T): Future[Ack]
The Subscriber.onNext method that pushes events to the underlying subscriber.
The Subscriber.onNext method that pushes events to the underlying subscriber.
It will back-pressure by means of its
Future[Ack]
result until connect happens and the underlying queue of scheduled events have been drained.- Definition Classes
- ConnectableSubscriber → Observer
-
def
pushComplete(): Unit
Schedule a complete event when connect happens, but before any elements scheduled with pushFirst or pushFirstAll.
Schedule a complete event when connect happens, but before any elements scheduled with pushFirst or pushFirstAll.
After
pushComplete
no more pushFirst or onNext events are accepted. -
def
pushError(ex: Throwable): Unit
Schedule an error event when connect happens, but before any elements scheduled with pushFirst or pushFirstAll.
Schedule an error event when connect happens, but before any elements scheduled with pushFirst or pushFirstAll.
After
pushError
no more pushFirst or onNext events are accepted. -
def
pushFirst(elem: T): Unit
Schedule one element to be pushed to the underlying subscriber when connect happens.
Schedule one element to be pushed to the underlying subscriber when connect happens.
The given elements are appended to a queue that will be drained on connect. Afterwards no more elements are allowed to be pushed in the queue.
These elements are streamed before any elements that will eventually get streamed with onNext, because of the applied back-pressure from
onNext
. -
def
pushFirstAll[U <: T](xs: TraversableOnce[U]): Unit
Schedule elements to be pushed to the underlying subscriber when connect happens.
Schedule elements to be pushed to the underlying subscriber when connect happens.
The given elements are appended to a queue that will be drained on connect. Afterwards no more elements are allowed to be pushed in the queue.
These elements are streamed before any elements that will eventually get streamed with onNext, because of the applied back-pressure from
onNext
. -
implicit
val
scheduler: Scheduler
- Definition Classes
- ConnectableSubscriber → Subscriber
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
This is the API documentation for the Monix library.
Package Overview
monix.execution exposes lower level primitives for dealing with asynchronous execution:
Atomic
types, as alternative tojava.util.concurrent.atomic
monix.eval is for dealing with evaluation of results, thus exposing Task and Coeval.
monix.reactive exposes the
Observable
pattern:Observable
implementationsmonix.types implements type-class shims, to be translated to type-classes provided by libraries such as Cats or Scalaz.
monix.cats is the optional integration with the Cats library, providing translations for the types described in
monix.types
.monix.scalaz is the optional integration with the Scalaz library, providing translations for the types described in
monix.types
.