0 | module Node.Net.Server
3 | import public Node.Error
4 | import public Node.Net.Server.Listen
5 | import Node.Event.Internal
7 | %foreign nodeOn0 "close"
8 | ffi_onClose : s -> PrimIO () -> PrimIO ()
11 | unsafeServerOnClose : HasIO io => s -> IO () -> io ()
12 | unsafeServerOnClose = on0 ffi_onClose
14 | %foreign nodeOn1 "connection"
15 | ffi_onConnection : s -> (socket -> PrimIO ()) -> PrimIO ()
18 | unsafeServerOnConnection : HasIO io => s -> (socket -> IO ()) -> io ()
19 | unsafeServerOnConnection = on1 ffi_onConnection
21 | %foreign nodeOn1 "error"
22 | ffi_onError : s -> (e -> PrimIO ()) -> PrimIO ()
25 | unsafeServerOnError : HasIO io => s -> (Error -> IO ()) -> io ()
26 | unsafeServerOnError = on1 ffi_onError
28 | %foreign nodeOn0 "listening"
29 | ffi_onListening : s -> PrimIO () -> PrimIO ()
32 | unsafeServerOnListening : HasIO io => s -> IO () -> io ()
33 | unsafeServerOnListening = on0 ffi_onListening
35 | %foreign nodeOn1 "drop"
36 | ffi_onDrop : s -> (drop -> PrimIO ()) -> PrimIO ()
39 | unsafeServerOnDrop : HasIO io => s -> (drop -> IO ()) -> io ()
40 | unsafeServerOnDrop = on1 ffi_onDrop
42 | %foreign "node:lambda: (ty, server, options) => server.listen(options)"
43 | ffi_listen : s -> Node Listen.Options -> PrimIO ()
46 | unsafeServerListen : HasIO io => s -> Listen.Options -> io ()
47 | unsafeServerListen server options = primIO $
ffi_listen server $
convertOptions options
49 | %foreign "node:lambda: (ty, server) => server.close()"
50 | ffi_close : s -> PrimIO ()
53 | unsafeServerClose : HasIO io => s -> io ()
54 | unsafeServerClose server = primIO $
ffi_close server
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
74 | data Server : Type where [external]
77 | implementation ServerClass Server where