All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mle.concurrent.PromiseHelpers.scala Maven / Gradle / Ivy

The newest version!
package com.mle.concurrent

import scala.concurrent.Promise
import scala.util.Try

/**
 *
 * @author mle
 */
trait PromiseHelpers {
  // Defensive coding

  def trySuccess[T](value: T, promise: Promise[T]): Unit =
    tryIfPossible(promise)(_ trySuccess value)

  def tryFailure(t: Throwable, promises: Promise[_]*): Unit =
    promises foreach (p => tryIfPossible(p)(_ tryFailure t))

  def tryIfPossible[T, U](promise: Promise[T])(f: Promise[T] => U): Option[Try[U]] = {
    if (!promise.isCompleted) {
      Some(Try(f(promise)))
    } else {
      None
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy