colossus.streaming

Pipe

trait Pipe[I, O] extends Sink[I] with Source[O]

A Pipe is an abstraction that mediates interactions between producers and consumers of a stream of data. It can be thought of as a mutable buffer that has built-in features for addressing both back-pressure (when the pipe "fills") and forward-pressure (when the pipe "empties"). Items are "pushed" into the pipe and "pulled" out of it.

A Pipe is the combination of the Source and Sink traits, representing the producer and consumer interfaces, respectively. It should be noted that a Pipe does not contain additional state beyond that provided by the Source and Sink interfaces. In other words, it may be possible for the producer Sink side of a pipe to be Closed or Terminated, while the consumer Source side is in a different state.

The canonical implementation is the BufferedPipe, backed by a fixed-length buffer. However pipes have many monadic and combinatorial capabilities, allowing them to be mapped, linked together, flattened, and multiplexed.

As opposed to other libraries/frameworks that have a concept of streams, sources, and sinks, these pipes are intended for low-level stream management. They support several features that allow interation with pipes to be very fast and efficient. They form the backbone of all connection handlers and as well as streaming protocols like http/2. Pipes are *not* thread-safe.

Linear Supertypes
Source[O], Sink[I], Transport, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Pipe
  2. Source
  3. Sink
  4. Transport
  5. AnyRef
  6. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def complete(): Try[Unit]

    Definition Classes
    Sink
  2. abstract def inputState: TransportState

    Definition Classes
    Sink
  3. abstract def outputState: TransportState

    Definition Classes
    Source
  4. abstract def peek: PullResult[O]

    Definition Classes
    Source
  5. abstract def pull(): PullResult[O]

    Pull the next item from the Source if available.

    Pull the next item from the Source if available. The returned PullResult will indicate whether an item was successfully pulled.

    Definition Classes
    Source
  6. abstract def pullWhile(fn: (O) ⇒ PullAction, onComplete: (TerminalPullResult) ⇒ Any): Unit

    Repeatedly pull items out of a pipe, even if items are not immediately available.

    Repeatedly pull items out of a pipe, even if items are not immediately available. The Source will hold onto the given processing function and immediately forward items into it as they become available. The returned PullAction determines how the Source will proceed with the next item. If PullContinue or Wait are returned, the Source will hold onto the processing function for either when the next item is available or when the returned Signal is fired. onComplete is only called if the Source is closed or terminated while the processing function is in use.

    When Wait is returned, the item that was passed into the processing function is _not_ pulled from the source. Thus when the returned signal is fired and processing resumes, the same item will be passed to the processing function.

    This method is generally intended for linking the output of a Source to the input of a Sink. For a simplified version of this functionality, see Source.into.

    Definition Classes
    Source
  7. abstract def push(item: I): PushResult

    Definition Classes
    Sink
  8. abstract def pushPeek: PushResult

    Definition Classes
    Sink
  9. abstract def terminate(reason: Throwable): Unit

    Immediately terminate the transport, permenantly putting it into an error state

    Immediately terminate the transport, permenantly putting it into an error state

    Definition Classes
    Transport

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. def ++[U >: O](next: Source[U]): Source[U]

    Definition Classes
    Source
  5. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  6. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  7. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  8. def canPullNonEmpty: Boolean

    Definition Classes
    Source
  9. def canPush: Boolean

    Definition Classes
    Sink
  10. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  11. def collected: Callback[Iterator[O]]

    Definition Classes
    Source
  12. final def eq(arg0: AnyRef): Boolean

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

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

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  15. def fold[U](init: U)(cb: (O, U) ⇒ U): Callback[U]

    Definition Classes
    Source
  16. def foldWhile[U](init: U)(cb: (O, U) ⇒ U)(f: (U) ⇒ Boolean): Callback[U]

    Definition Classes
    Source
  17. final def getClass(): Class[_]

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

    Definition Classes
    AnyRef → Any
  19. def into[X >: O](sink: Sink[X]): Unit

    Definition Classes
    Source
  20. def into[X >: O](sink: Sink[X], linkClosed: Boolean, linkTerminated: Boolean)(onComplete: (NonOpenTransportState) ⇒ Any): Unit

    Link this source to a sink.

    Link this source to a sink. Items will be pulled from the source and pushed to the sink, respecting backpressure, until either the source is closed or an error occurs. The linkClosed and linkTerminated parameters determine whether to propagate closure/termination of this Source to the linked Sink. However if the sink is closed or terminated first, this source will be terminated.

    sink

    The sink to link to this source

    linkClosed

    if true, the linked sink will be closed when this source is closed

    linkTerminated

    if true, the linked sink will be terminated when this source is terminated

    Definition Classes
    Source
  21. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  22. def mapIn[A](f: (A) ⇒ I): Sink[A]

    Definition Classes
    Sink
  23. final def ne(arg0: AnyRef): Boolean

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

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

    Definition Classes
    AnyRef
  26. def pull(whenReady: (Try[Option[O]]) ⇒ Unit): Unit

    Definition Classes
    Source
  27. def pullCB(): Callback[Option[O]]

    Definition Classes
    Source
  28. def pullUntilNull(fn: (O) ⇒ Boolean): Option[NullPullResult]

    Pull until either the supplied function returns false or there are no more items immediately available to pull, in which case a Some[NullPullResult] is returned indicating why the loop stopped.

    Pull until either the supplied function returns false or there are no more items immediately available to pull, in which case a Some[NullPullResult] is returned indicating why the loop stopped.

    Definition Classes
    Source
  29. def reduce[U >: O](reducer: (U, U) ⇒ U): Callback[U]

    Definition Classes
    Source
  30. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  31. def toString(): String

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

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  35. def weld[U >: O, T](next: Pipe[U, T]): Pipe[I, T]

Inherited from Source[O]

Inherited from Sink[I]

Inherited from Transport

Inherited from AnyRef

Inherited from Any

Ungrouped