40 lines
968 B
Scala
40 lines
968 B
Scala
package wow.doge.mygame.executors
|
|
|
|
import com.typesafe.scalalogging.Logger
|
|
import monix.execution.Scheduler
|
|
import monix.execution.UncaughtExceptionReporter
|
|
|
|
final case class Schedulers(
|
|
blockingIO: 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.global
|
|
.withUncaughtExceptionReporter(Schedulers.reporter)
|
|
),
|
|
FxScheduler(
|
|
JFXExecutionContexts.fxScheduler
|
|
.withUncaughtExceptionReporter(Schedulers.reporter)
|
|
)
|
|
)
|
|
|
|
case class AsyncScheduler(value: Scheduler)
|
|
case class IoScheduler(value: Scheduler)
|
|
case class FxScheduler(value: Scheduler)
|
|
|
|
}
|