Skip to content

Instantly share code, notes, and snippets.

@aoiroaoino
Last active September 29, 2015 09:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aoiroaoino/f58919da81fcce869960 to your computer and use it in GitHub Desktop.
Save aoiroaoino/f58919da81fcce869960 to your computer and use it in GitHub Desktop.
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_25).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import akka.actor.ActorSystem
import akka.actor.ActorSystem
scala> import akka.stream.ActorMaterializer
import akka.stream.ActorMaterializer
scala> import akka.stream.scaladsl.{Source, Flow, Sink}
import akka.stream.scaladsl.{Source, Flow, Sink}
scala> implicit val actorSystem = ActorSystem("akka-system")
actorSystem: akka.actor.ActorSystem = akka://akka-system
scala> implicit val mat = ActorMaterializer()
mat: akka.stream.ActorMaterializer = ActorMaterializerImpl(akka://akka-system,akka.stream.ActorMaterializerSettings@e60e1fe,akka.dispatch.Dispatchers@28f3bfda,Actor[akka://akka-system/user/$a#121836947],false,0,flow,Optimizations(false,false,false,false))
scala> val fives = Source.repeat(5)
fives: akka.stream.scaladsl.Source[Int,Unit] = akka.stream.scaladsl.Source@65cb4483
scala> val timesTwo = Flow[Int].map(_ * 2)
timesTwo: akka.stream.scaladsl.Flow[Int,Int,Unit] = akka.stream.scaladsl.Flow@214e022a
scala> val intToString = Flow[Int].map(_.toString)
intToString: akka.stream.scaladsl.Flow[Int,String,Unit] = akka.stream.scaladsl.Flow@2ceb64c2
scala> val transform = timesTwo via intToString
transform: akka.stream.scaladsl.Flow[Int,String,Unit] = akka.stream.scaladsl.Flow@4e367162
scala> val sysOut = Sink.foreach(println)
sysOut: akka.stream.scaladsl.Sink[Any,scala.concurrent.Future[Unit]] = akka.stream.scaladsl.Sink@6d626983
scala> val r = fives via transform.take(10) to sysOut
r: akka.stream.scaladsl.RunnableGraph[Unit] =
RunnableGraph(
Module: repeat
Modules: repeat
mapConcat
map
akka.stream.impl.StreamLayout$CopiedModule
Downstreams:
RepeatSource.out -> Flow.in
Flow.out -> Flow.in
Flow.out -> Flow.in
Upstreams:
Flow.in -> RepeatSource.out
Flow.in -> Flow.out
Flow.in -> Flow.out
)
scala> r.run()
scala> 10
10
10
10
10
10
10
10
10
10
// http://www.slideshare.net/ktoso/the-need-for-async-scalaworld
// page 126
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{Source, Flow, Sink}
object Example {
implicit val actorSystem = ActorSystem("akka-system")
implicit val mat = ActorMaterializer()
val fives = Source.repeat(5)
val timesTwo = Flow[Int].map(_ * 2)
val intToString = Flow[Int].map(_.toString)
val transform = timesTwo via intToString
val sysOut = Sink.foreach(println)
val r = fives via transform.take(10) to sysOut
r.run()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment