Here is a simple example of using Concurrent.unicast [E]:
// assume the following exist: def readValueAsync(source: MySource): Future[Any] val source: MySource = ... // this is where the meat is: val valueEnumerator = Concurrent.unicast[Any] { (channel: Concurrent.Channel[Any]) => readValueAsync(source) onComplete { case Success(x: Any) => channel.push(x) case Failure(t) => channel.end(t) } } // you can then collect it using an iteratee // since my enumerator never really ends, I only take 10 elements here val result: List[Any] = valueEnumerator through Enumeratee.take(10) run Interatee.getChunks[Any]
nadavwr
source share