0 | module Node.Net.Server
 1 |
 2 | import public Node
 3 | import public Node.Error
 4 | import public Node.Net.Server.Listen
 5 | import Node.Event.Internal
 6 |
 7 | %foreign nodeOn0 "close"
 8 | ffi_onClose : s -> PrimIO () -> PrimIO ()
 9 |
10 | export
11 | unsafeServerOnClose : HasIO io => s -> IO () -> io ()
12 | unsafeServerOnClose = on0 ffi_onClose
13 |
14 | %foreign nodeOn1 "connection"
15 | ffi_onConnection : s -> (socket -> PrimIO ()) -> PrimIO ()
16 |
17 | export
18 | unsafeServerOnConnection : HasIO io => s -> (socket -> IO ()) -> io ()
19 | unsafeServerOnConnection = on1 ffi_onConnection
20 |
21 | %foreign nodeOn1 "error"
22 | ffi_onError : s -> (e -> PrimIO ()) -> PrimIO ()
23 |
24 | export
25 | unsafeServerOnError : HasIO io => s -> (Error -> IO ()) -> io ()
26 | unsafeServerOnError = on1 ffi_onError
27 |
28 | %foreign nodeOn0 "listening"
29 | ffi_onListening : s -> PrimIO () -> PrimIO ()
30 |
31 | export
32 | unsafeServerOnListening : HasIO io => s -> IO () -> io ()
33 | unsafeServerOnListening = on0 ffi_onListening
34 |
35 | %foreign nodeOn1 "drop"
36 | ffi_onDrop : s -> (drop -> PrimIO ()) -> PrimIO ()
37 |
38 | export
39 | unsafeServerOnDrop : HasIO io => s -> (drop -> IO ()) -> io ()
40 | unsafeServerOnDrop = on1 ffi_onDrop
41 |
42 | %foreign "node:lambda: (ty, server, options) => server.listen(options)"
43 | ffi_listen : s -> Node Listen.Options -> PrimIO ()
44 |
45 | export
46 | unsafeServerListen : HasIO io => s -> Listen.Options -> io ()
47 | unsafeServerListen server options = primIO $ ffi_listen server $ convertOptions options
48 |
49 | %foreign "node:lambda: (ty, server) => server.close()"
50 | ffi_close : s -> PrimIO ()
51 |
52 | export
53 | unsafeServerClose : HasIO io => s -> io ()
54 | unsafeServerClose server = primIO $ ffi_close server
55 |
56 | public export
57 | interface ServerClass s where
58 |   (.onClose) : HasIO io => s -> IO () -> io ()
59 |   (.onClose) = unsafeServerOnClose
60 |   (.onConnection) : HasIO io => s -> (socket -> IO ()) -> io ()
61 |   (.onConnection) = unsafeServerOnConnection
62 |   (.onError) : HasIO io => s -> (Error -> IO ()) -> io ()
63 |   (.onError) = unsafeServerOnError
64 |   (.onListening) : HasIO io => s -> IO () -> io ()
65 |   (.onListening) = unsafeServerOnListening
66 |   (.onDrop) : HasIO io => s -> (drop -> IO ()) -> io ()
67 |   (.onDrop) = unsafeServerOnDrop
68 |   (.listen) : HasIO io => s -> Listen.Options -> io ()
69 |   (.listen) = unsafeServerListen
70 |   (.close) : HasIO io => s -> io ()
71 |   (.close) = unsafeServerClose
72 |
73 | export
74 | data Server : Type where [external]
75 |
76 | public export
77 | implementation ServerClass Server where
78 |
79 |