equal
deleted
inserted
replaced
13 val with_streams: (BinIO.instream * BinIO.outstream -> 'a) -> string -> 'a |
13 val with_streams: (BinIO.instream * BinIO.outstream -> 'a) -> string -> 'a |
14 end; |
14 end; |
15 |
15 |
16 structure Socket_IO: SOCKET_IO = |
16 structure Socket_IO: SOCKET_IO = |
17 struct |
17 struct |
|
18 |
|
19 fun close_permissive socket = |
|
20 Socket.close socket handle OS.SysErr _ => (); |
18 |
21 |
19 fun make_streams socket = |
22 fun make_streams socket = |
20 let |
23 let |
21 val (host, port) = INetSock.fromAddr (Socket.Ctl.getSockName socket); |
24 val (host, port) = INetSock.fromAddr (Socket.Ctl.getSockName socket); |
22 val name = NetHostDB.toString host ^ ":" ^ string_of_int port; |
25 val name = NetHostDB.toString host ^ ":" ^ string_of_int port; |
34 avail = fn () => NONE, |
37 avail = fn () => NONE, |
35 getPos = NONE, |
38 getPos = NONE, |
36 setPos = NONE, |
39 setPos = NONE, |
37 endPos = NONE, |
40 endPos = NONE, |
38 verifyPos = NONE, |
41 verifyPos = NONE, |
39 close = fn () => Socket.close socket, |
42 close = fn () => close_permissive socket, |
40 ioDesc = NONE |
43 ioDesc = NONE |
41 }; |
44 }; |
42 |
45 |
43 val wr = |
46 val wr = |
44 BinPrimIO.WR { |
47 BinPrimIO.WR { |
52 canOutput = NONE, |
55 canOutput = NONE, |
53 getPos = NONE, |
56 getPos = NONE, |
54 setPos = NONE, |
57 setPos = NONE, |
55 endPos = NONE, |
58 endPos = NONE, |
56 verifyPos = NONE, |
59 verifyPos = NONE, |
57 close = fn () => Socket.close socket, |
60 close = fn () => close_permissive socket, |
58 ioDesc = NONE |
61 ioDesc = NONE |
59 }; |
62 }; |
60 |
63 |
61 val in_stream = |
64 val in_stream = |
62 BinIO.mkInstream |
65 BinIO.mkInstream |