Sketch init and produceEvents for LineTerminal facility.
Chris Pressey
5 years ago
4 | 4 | |
5 | 5 | import Language.Robin.Expr |
6 | 6 | import Language.Robin.Facilities |
7 | ||
8 | ||
9 | import Control.Concurrent (forkIO, myThreadId) | |
10 | import Control.Concurrent.Chan | |
11 | ||
12 | ||
13 | -- sketch | |
14 | init :: IO FacilityHandler | |
15 | init = do | |
16 | chan <- newChan | |
17 | threadId <- forkIO $ produceEvents chan | |
18 | return handleEvent | |
19 | ||
20 | ||
21 | -- sketch | |
22 | produceEvents :: Chan Event -> IO () | |
23 | produceEvents chan = do | |
24 | event <- waitForEvent | |
25 | writeChan chan event | |
26 | produceEvents chan | |
7 | 27 | |
8 | 28 | |
9 | 29 | waitForEvent :: WaitForEvents |