Class/Object

io.fsq.common.concurrent

FutureOutcome

Related Docs: object FutureOutcome | package concurrent

Permalink

final class FutureOutcome[+S, +F] extends AnyVal

Inspired by io.fsq.common.concurrent.FutureOption, this is a monadic wrapper around Future[Outcome[S, F]] so you can easily combine Future[S], Option[S], Outcome[S, F], etc. into a for yield.

Example:

val result: Future[Outcome[Venue, String]] = (for { userid <- FutureOutcome.lift(msg.useridOption, "no-userid") user <- FutureOutcome.lift(services.futureDb.fetchOne(Q(User).where(_.userid eqs userid)), "no-user") venue <- FutureOutcome(services.foo.bar(user)) // where bar returns Future[Outcome[Venue, String]] _ <- FutureOutcome.failWhen(venue.isHomeOrOffice, "home-or-office-venue") } yield venue).resolve

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

Instance Constructors

  1. new FutureOutcome(resolve: Future[Outcome[S, F]])

    Permalink

Value Members

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

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

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

    Permalink
    Definition Classes
    Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def filter[FF >: F](f: (S) ⇒ Boolean, failure: FF): FutureOutcome[S, FF]

    Permalink
  6. def flatMap[T, FF >: F](f: (S) ⇒ FutureOutcome[T, FF]): FutureOutcome[T, FF]

    Permalink
  7. def flatten[T, FF >: F](implicit asFutureOutcome: (S) ⇒ FutureOutcome[T, FF]): FutureOutcome[T, FF]

    Permalink
  8. def foreach[T](f: (S) ⇒ Unit): Unit

    Permalink
  9. def getClass(): Class[_ <: AnyVal]

    Permalink
    Definition Classes
    AnyVal → Any
  10. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  11. def map[T](f: (S) ⇒ T): FutureOutcome[T, F]

    Permalink
  12. def orElse[B >: S, FF >: F](f: ⇒ FutureOutcome[B, FF]): FutureOutcome[B, FF]

    Permalink
  13. val resolve: Future[Outcome[S, F]]

    Permalink
  14. def toString(): String

    Permalink
    Definition Classes
    Any
  15. def withFilter[FF >: F](f: (S) ⇒ Boolean, failure: FF): FutureOutcome[S, FF]

    Permalink

Inherited from AnyVal

Inherited from Any

Ungrouped