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.

79 lines
2.0 KiB

4 years ago
  1. package nova.monadic_sfx.modules
  2. import nova.monadic_sfx.executors.Schedulers
  3. import monix.execution.Scheduler
  4. import nova.monadic_sfx.http.requests.DummyRequest
  5. import monix.eval.Task
  6. import akka.{actor => classic}
  7. import cats.effect.Resource
  8. import nova.monadic_sfx.AppTypes
  9. trait MainModule {
  10. import com.softwaremill.macwire._
  11. // val schedulers: Schedulers = new Schedulers()
  12. // implicit val defaultScheduler: Scheduler = schedulers.fx
  13. // val program =
  14. // for {
  15. // backend <- Backend()
  16. // fxActorSystem <-
  17. // Resource
  18. // .make(Task {
  19. // classic.ActorSystem(
  20. // name = "FXActorSystem"
  21. // )
  22. // })(sys => Task(sys.terminate()))
  23. // } yield {
  24. // val dummyRequester = wire[DummyRequest]
  25. // dummyRequester.send()
  26. // }
  27. // val program = Backend().use(backend =>
  28. // Resource
  29. // .make(Task {
  30. // classic.ActorSystem(
  31. // name = "FXActorSystem"
  32. // )
  33. // })(sys => Task(sys.terminate()))
  34. // .use { implicit system =>
  35. // // system.spa
  36. // // system.typed
  37. // // val javaFxActor = system.actorOf(
  38. // // Props[JavaFxActor]().withDispatcher("javafx-dispatcher"),
  39. // // "javaFxActor"
  40. // // )
  41. // // val swingActor = system.actorOf(
  42. // // Props[SwingActor]().withDispatcher("swing-dispatcher"),
  43. // // "swingActor"
  44. // // )
  45. // Task(new DummyRequest(backend)) >>
  46. // Task.unit
  47. // }
  48. // )
  49. def schedulers: Schedulers
  50. def defaultScheduler: Scheduler
  51. def backendTask: Task[AppTypes.HttpBackend]
  52. def actorSystemTask: Task[classic.ActorSystem]
  53. def deps =
  54. for {
  55. backend <- backendTask
  56. actorSystem <- actorSystemTask
  57. dummyRequesterTask <- Task {
  58. wireDeps(backend, actorSystem)
  59. }
  60. } yield dummyRequesterTask
  61. def wireDeps(
  62. backend: AppTypes.HttpBackend,
  63. system: classic.ActorSystem
  64. ): DummyRequest = {
  65. wire[DummyRequest]
  66. // new DummyRequest(backend)
  67. }
  68. }