|
7 | 7 | {-# LANGUAGE TypeApplications #-} |
8 | 8 | {-# LANGUAGE TypeOperators #-} |
9 | 9 | {-# LANGUAGE UndecidableInstances #-} |
10 | | -{-# OPTIONS_GHC -Wno-name-shadowing #-} |
11 | 10 |
|
12 | | -module Chan.Driver where |
| 11 | +module Chan.Driver ( |
| 12 | + ProtocolMessage (..), |
| 13 | + protocolMessage, |
| 14 | + chanDriver, |
| 15 | +) where |
13 | 16 |
|
14 | | -import Chan.Core |
15 | | -import Chan.TCP |
16 | | -import Data.Type.Equality |
| 17 | +import Chan.Core (Chan (readChan, writeChan)) |
| 18 | +import Chan.TCP (MessageSize (..)) |
| 19 | +import Data.Type.Equality (type (:~:) (..)) |
17 | 20 | import Network.TypedProtocol ( |
18 | 21 | ActiveState, |
19 | 22 | Driver (..), |
@@ -49,27 +52,27 @@ chanDriver :: |
49 | 52 | Driver ps pr () m |
50 | 53 | chanDriver cmp ch = |
51 | 54 | Driver |
52 | | - { sendMessage = sendMessage |
53 | | - , recvMessage = recvMessage |
| 55 | + { sendMessage = sendMessage' |
| 56 | + , recvMessage = recvMessage' |
54 | 57 | , initialDState = () |
55 | 58 | } |
56 | 59 | where |
57 | | - sendMessage :: |
| 60 | + sendMessage' :: |
58 | 61 | forall (st :: ps) (st' :: ps). |
59 | 62 | (StateTokenI st, StateTokenI st', ActiveState st) => |
60 | 63 | WeHaveAgencyProof pr st -> |
61 | 64 | Message ps st st' -> |
62 | 65 | m () |
63 | | - sendMessage _prf msg = |
| 66 | + sendMessage' _prf msg = |
64 | 67 | writeChan ch (ProtocolMessage (SomeMessage msg)) |
65 | 68 |
|
66 | | - recvMessage :: |
| 69 | + recvMessage' :: |
67 | 70 | forall (st :: ps). |
68 | 71 | (StateTokenI st, ActiveState st) => |
69 | 72 | TheyHaveAgencyProof pr st -> |
70 | 73 | () -> |
71 | 74 | m (SomeMessage st, ()) |
72 | | - recvMessage _prf () = do |
| 75 | + recvMessage' _prf () = do |
73 | 76 | ProtocolMessage smsg <- readChan ch |
74 | 77 | case smsg of |
75 | 78 | SomeMessage (msg :: Message ps st' st1) -> case cmp @st @st' of |
|
0 commit comments