+doc #15239: Stream cookbook

This commit is contained in:
Endre Sándor Varga 2014-12-08 17:29:40 +01:00
parent ef2835d60e
commit 2c01bed1a7
19 changed files with 1629 additions and 0 deletions

View file

@ -0,0 +1,53 @@
package docs.stream.cookbook
import akka.stream.scaladsl.{ Sink, Source }
import akka.stream.testkit.StreamTestKit
import akka.stream.testkit.StreamTestKit.{ SubscriberProbe, PublisherProbe }
import scala.concurrent.duration._
class RecipeMissedTicks extends RecipeSpec {
"Recipe for collecting missed ticks" must {
"work" in {
type Tick = Unit
val pub = PublisherProbe[Tick]()
val sub = SubscriberProbe[Int]()
val tickStream = Source(pub)
val sink = Sink(sub)
//#missed-ticks
// tickStream is a Source[Tick]
val missedTicks: Source[Int] =
tickStream.conflate(seed = (_) => 0)(
(missedTicks, tick) => missedTicks + 1)
//#missed-ticks
missedTicks.to(sink).run()
val manualSource = new StreamTestKit.AutoPublisher(pub)
manualSource.sendNext(())
manualSource.sendNext(())
manualSource.sendNext(())
manualSource.sendNext(())
val subscription = sub.expectSubscription()
subscription.request(1)
sub.expectNext(3)
subscription.request(1)
sub.expectNoMsg(100.millis)
manualSource.sendNext(())
sub.expectNext(0)
manualSource.sendComplete()
subscription.request(1)
sub.expectComplete()
}
}
}