preparation for adding new additional threads/mailboxes (namely, the file mailbox)

This commit is contained in:
2024-08-28 20:11:00 +01:00
parent fb9202248c
commit e587c6cf73
8 changed files with 59 additions and 49 deletions

View File

@@ -1,18 +1,32 @@
structure UpdateThread =
signature UPDATE_THREAD =
sig
val run:
InputMessage.t Mailbox.mbox
* DrawMessage.t Mailbox.mbox
* AppType.app_type
-> unit
end
structure UpdateThread :> UPDATE_THREAD =
struct
open CML
open UpdateMessage
local
fun loop (inputMailbox, drawMailbox, model) =
let
val inputMsg = Mailbox.recv inputMailbox
val (model, drawMsg) = AppUpdate.update (model, inputMsg)
val _ = Mailbox.send (drawMailbox, drawMsg)
in
loop (inputMailbox, drawMailbox, model)
end
in
fun run (inputMailbox, drawMailbox, initial) =
loop (inputMailbox, drawMailbox, initial)
end
fun handleMsg (drawMailbox, updateMsg) =
case updateMsg of
DRAW drawMsg => Mailbox.send (drawMailbox, drawMsg)
| FILE fileMsg => ()
| NO_MAILBOX => ()
fun loop (inputMailbox, drawMailbox, model) =
let
val inputMsg = Mailbox.recv inputMailbox
val (model, updateMsg) = AppUpdate.update (model, inputMsg)
val _ = handleMsg (drawMailbox, updateMsg)
in
loop (inputMailbox, drawMailbox, model)
end
fun run (inputMailbox, drawMailbox, initial) =
loop (inputMailbox, drawMailbox, initial)
end