iniyanp
2/10/2017 - 11:32 PM

Usage of observeW, through, channel, Sink, Writer.

Usage of observeW, through, channel, Sink, Writer.

val func1:(Int => Task[Unit]) = s => Task.delay(println(s))
val mySink1:Sink[Task, Int] = sink.lift(func1)

val q2:List[Int \/ String] = List(-\/(1212),\/-("Iniyan"))
//val q1:Process[Task, \/[Int, String]] = Process.emitAll(q2)
val q1:Writer[Task, Int, String] = Process.emitAll(q2)
val func2: (Int \/ String) => Task[Unit] = s => Task.delay(println(s"This is coming from channel.. ${s}"))
//val myChannel:Process[Task, Int \/ String => Task[Unit]] = sink.lift(func2)
val myChannel:Channel[Task, (Int \/ String),Unit] = sink.lift(func2)
//val myChannel:Sink[Task, (Int \/ String)] = sink.lift(func2)
val q3 = q1.observeW(mySink1).through(myChannel)
q3.run.run
//Result
//1212
//This is coming from channel.. -\/(1212)
//This is coming from channel.. \/-(Iniyan)