Packages

o

monix.catnap

SchedulerEffect

object SchedulerEffect

Source
SchedulerEffect.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. SchedulerEffect
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. def clock[F[_]](source: Scheduler)(implicit F: Sync[F]): Clock[F]

    Derives a cats.effect.Clock from Scheduler for any data type that has a cats.effect.LiftIO implementation.

  2. def contextShift[F[_]](source: Scheduler)(implicit F: Async[F]): ContextShift[F]

    Derives a cats.effect.ContextShift from Scheduler for any data type that has a cats.effect.Effect implementation.

    Derives a cats.effect.ContextShift from Scheduler for any data type that has a cats.effect.Effect implementation.

    import monix.execution.Scheduler
    import java.util.concurrent.Executors
    import scala.concurrent.ExecutionContext
    import cats.effect._
    
    val contextShift: ContextShift[IO] = SchedulerEffect.contextShift[IO](Scheduler.global)
    val executor = Executors.newCachedThreadPool()
    val ec = ExecutionContext.fromExecutor(executor)
    
    contextShift.evalOn(ec)(IO(println("I'm on different thread pool!")))
      .flatMap { _ =>
        IO(println("I came back to default"))
      }
  3. def timer[F[_]](source: Scheduler)(implicit F: Concurrent[F]): Timer[F]

    Derives a cats.effect.Timer from Scheduler for any data type that has a cats.effect.Concurrent type class instance.

    Derives a cats.effect.Timer from Scheduler for any data type that has a cats.effect.Concurrent type class instance.

    import monix.execution.Scheduler
    import cats.effect._
    import scala.concurrent.duration._
    
    // Needed for ContextShift[IO]
    implicit def shift: ContextShift[IO] =
      SchedulerEffect.contextShift[IO](Scheduler.global)(IO.ioEffect)
    
    implicit val timer: Timer[IO] = SchedulerEffect.timer[IO](Scheduler.global)
    
    IO.sleep(10.seconds).flatMap { _ =>
      IO(println("Delayed hello!"))
    }
  4. def timerLiftIO[F[_]](source: Scheduler)(implicit F: LiftIO[F]): Timer[F]

    Derives a cats.effect.Timer from Scheduler for any data type that has a cats.effect.LiftIO instance.

    Derives a cats.effect.Timer from Scheduler for any data type that has a cats.effect.LiftIO instance.

    This is the relaxed timer method, needing only LiftIO to work, by piggybacking on cats.effect.IO.

    import monix.execution.Scheduler
    import cats.effect._
    import scala.concurrent.duration._
    
    implicit val timer: Timer[IO] = SchedulerEffect.timerLiftIO[IO](Scheduler.global)
    
    IO.sleep(10.seconds).flatMap { _ =>
      IO(println("Delayed hello!"))
    }