You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package nova.monadic_sfx.concurrent
import com.typesafe.scalalogging.Logger import monix.execution.Scheduler import monix.execution.UncaughtExceptionReporter import monix.execution.schedulers.TracingScheduler import cats.effect.Blocker
final case class Schedulers( io: Schedulers.IoScheduler, async: Schedulers.AsyncScheduler, fx: Schedulers.FxScheduler )
object Schedulers { val reporter = UncaughtExceptionReporter { ex => val logger = Logger[Schedulers] logger.error("Uncaught exception", ex) }
val default = Schedulers( IoScheduler( Scheduler .io() .withUncaughtExceptionReporter(Schedulers.reporter) ), AsyncScheduler( Scheduler .computation() .withUncaughtExceptionReporter(Schedulers.reporter) ), FxScheduler( TracingScheduler( JFXExecutionContexts.fxScheduler .withUncaughtExceptionReporter(Schedulers.reporter) ) ) )
final case class AsyncScheduler(value: Scheduler) final case class IoScheduler(value: Scheduler) { val blocker = Blocker.liftExecutionContext(value) } final case class FxScheduler(value: Scheduler) }
|