Object

datto.flow

MergeFlow

Related Doc: package flow

Permalink

object MergeFlow

MergeFlow provides a way to apply branching logic to a flow. It works as follows: with each flow, you assign a predicate that determines the conditions under which that flow should be applied. Generally, these predicates should be mutually exclusive and cover all possible cases, but this is not enforced. Together, these form a list of flow-predicate pairs. From these, a new flow is constructed, in which (in order) - Each item in the flow is broadcast to N child flows - Each child flow is filtered according to the associated predicate. - The items for which the predicate is true are passed down the associated flow. - Items that are errors (and hence to which none of the predicates apply) are propogated in another error flow. - The items in each flow are merged back into a single flow.

+------------+ | | | Broadcast | | | +------+-----+ /|\ / | \ / | \ / | \ / | \ / | \ / | \ / | \ +----------+ +-------+ +-------------+ |Predicate | | ... | | Errors | |1 Applied | | | | Propgated | | | | | | | +-----+----+ +---+---+ +------+------+ | | | | | | +-----+----+ +---+---+ / | Flow 1 | | Flows | / | | | | / +-----\----+ +---+---+ / \ | / \ | / \ | / \ | / \ | / \ | / \ | / \ | / \ |/ +----------------+ | | | Merge | | | +----------------+

Example:
  1. // Given two flows, one for handling positive ints and another // for handling negative ints, (both of type ContextFlow[Int, Int, Ctx]), // create a new flow that will handle positive ints with the postive flow // and negative ints with the negative flow. val flow: ContextFlow[Int, Int, Ctx] = MergeFlow( (positiveIntFlow, _ >= 0), (negativeIntFlow, _ < 0) )

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. MergeFlow
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def apply[A, B, Ctx](flowPredicatePairs: (ContextFlow[A, B, Ctx], (A) ⇒ Boolean)*): ContextFlow[A, B, Ctx]

    Permalink
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def clone(): AnyRef

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

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

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

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

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

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

    Permalink
    Definition Classes
    Any
  13. def merge[A, B, Ctx](flows: ContextFlow[A, B, Ctx]*): ContextFlow[A, B, Ctx]

    Permalink
  14. final def ne(arg0: AnyRef): Boolean

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

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

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

    Permalink
    Definition Classes
    AnyRef
  18. def toString(): String

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

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. def withContext[A, B, Ctx](flowPredicatePairs: (ContextFlow[A, B, Ctx], (A, Ctx, Metadata) ⇒ Boolean)*): ContextFlow[A, B, Ctx]

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped