File tree 1 file changed +10
-5
lines changed
1 file changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -55,30 +55,35 @@ main :: IO ()
55
55
main = do
56
56
serverAddr <- newEmptyMVar
57
57
clientDone <- newEmptyMVar
58
+ serverDone <- newEmptyMVar
58
59
59
60
Right transport <- createTransport "127.0.0.1" "10080" defaultTCPParameters
60
-
61
+
61
62
-- "Server"
62
63
forkIO $ do
63
64
Right endpoint <- newEndPoint transport
64
65
putMVar serverAddr (address endpoint)
65
-
66
+
66
67
forever $ do
67
68
event <- receive endpoint
68
69
case event of
69
70
Received _ msg -> print msg
71
+ ConnectionClosed{} -> putMVar serverDone ()
70
72
_ -> return () -- ignore
71
73
74
+
72
75
-- "Client"
73
76
forkIO $ do
74
77
Right endpoint <- newEndPoint transport
75
- Right conn <- do addr <- readMVar serverAddr
78
+ Right conn <- do addr <- readMVar serverAddr
76
79
connect endpoint addr ReliableOrdered defaultConnectHints
77
80
send conn [ fromString "Hello world"]
78
- putMVar clientDone ()
81
+ putMVar clientDone conn
79
82
80
83
-- Wait for the client to finish
81
- takeMVar clientDone
84
+ conn <- takeMVar clientDone
85
+ close conn
86
+ takeMVar serverDone
82
87
{% endhighlight %}
83
88
84
89
We create a "server" and a "client" (each represented by an ` EndPoint ` ).
You can’t perform that action at this time.
0 commit comments