diff options
Diffstat (limited to 'dht/src/Network/SocketLike.hs')
-rw-r--r-- | dht/src/Network/SocketLike.hs | 42 |
1 files changed, 2 insertions, 40 deletions
diff --git a/dht/src/Network/SocketLike.hs b/dht/src/Network/SocketLike.hs index d533dd7f..27f6f492 100644 --- a/dht/src/Network/SocketLike.hs +++ b/dht/src/Network/SocketLike.hs | |||
@@ -44,50 +44,23 @@ class SocketLike sock where | |||
44 | getPeerName :: sock -> IO SockAddr | 44 | getPeerName :: sock -> IO SockAddr |
45 | -- | See 'NS.getPeerCred' | 45 | -- | See 'NS.getPeerCred' |
46 | getPeerCred :: sock -> IO (CUInt, CUInt, CUInt) | 46 | getPeerCred :: sock -> IO (CUInt, CUInt, CUInt) |
47 | -- | See 'NS.socketPort' | 47 | |
48 | socketPort :: sock -> IO PortNumber | 48 | -- | Is the socket still valid? Connected |
49 | -- | See 'NS.sIsConnected' | ||
50 | -- | ||
51 | -- __Warning__: Don't rely on this method if it's possible the socket was | ||
52 | -- converted into a 'Handle'. | ||
53 | sIsConnected :: sock -> IO Bool | 49 | sIsConnected :: sock -> IO Bool |
54 | -- | See 'NS.sIsBound' | ||
55 | sIsBound :: sock -> IO Bool | ||
56 | -- | See 'NS.sIsListening' | ||
57 | sIsListening :: sock -> IO Bool | ||
58 | -- | See 'NS.sIsReadable' | ||
59 | sIsReadable :: sock -> IO Bool | ||
60 | -- | See 'NS.sIsWritable' | ||
61 | sIsWritable :: sock -> IO Bool | ||
62 | 50 | ||
63 | -- | This is the only exposed write-access method to the | ||
64 | -- underlying state. Usually implemented by 'NS.close' | ||
65 | sClose :: sock -> IO () | ||
66 | 51 | ||
67 | instance SocketLike NS.Socket where | 52 | instance SocketLike NS.Socket where |
68 | getSocketName = NS.getSocketName | 53 | getSocketName = NS.getSocketName |
69 | getPeerName = NS.getPeerName | 54 | getPeerName = NS.getPeerName |
70 | getPeerCred = NS.getPeerCred | 55 | getPeerCred = NS.getPeerCred |
71 | socketPort = NS.socketPort | ||
72 | #if MIN_VERSION_network(2,4,0) | 56 | #if MIN_VERSION_network(2,4,0) |
73 | sIsConnected = NS.isConnected -- warning: this is always False if the socket | 57 | sIsConnected = NS.isConnected -- warning: this is always False if the socket |
74 | -- was converted to a Handle | 58 | -- was converted to a Handle |
75 | sIsBound = NS.isBound | ||
76 | sIsListening = NS.isListening | ||
77 | sIsReadable = NS.isReadable | ||
78 | sIsWritable = NS.isWritable | ||
79 | sClose = NS.close | ||
80 | #else | 59 | #else |
81 | sIsConnected = NS.sIsConnected -- warning: this is always False if the socket | 60 | sIsConnected = NS.sIsConnected -- warning: this is always False if the socket |
82 | -- was converted to a Handle | 61 | -- was converted to a Handle |
83 | sIsBound = NS.sIsBound | ||
84 | sIsListening = NS.sIsListening | ||
85 | sIsReadable = NS.sIsReadable | ||
86 | sIsWritable = NS.sIsWritable | ||
87 | sClose = NS.sClose | ||
88 | #endif | 62 | #endif |
89 | 63 | ||
90 | |||
91 | -- | An encapsulated socket. Data reads and writes are not possible. | 64 | -- | An encapsulated socket. Data reads and writes are not possible. |
92 | data RestrictedSocket = Restricted (Maybe Handle) NS.Socket deriving Show | 65 | data RestrictedSocket = Restricted (Maybe Handle) NS.Socket deriving Show |
93 | 66 | ||
@@ -95,21 +68,10 @@ instance SocketLike RestrictedSocket where | |||
95 | getSocketName (Restricted mb sock) = NS.getSocketName sock | 68 | getSocketName (Restricted mb sock) = NS.getSocketName sock |
96 | getPeerName (Restricted mb sock) = NS.getPeerName sock | 69 | getPeerName (Restricted mb sock) = NS.getPeerName sock |
97 | getPeerCred (Restricted mb sock) = NS.getPeerCred sock | 70 | getPeerCred (Restricted mb sock) = NS.getPeerCred sock |
98 | socketPort (Restricted mb sock) = NS.socketPort sock | ||
99 | #if MIN_VERSION_network(2,4,0) | 71 | #if MIN_VERSION_network(2,4,0) |
100 | sIsConnected (Restricted mb sock) = maybe (NS.isConnected sock) (hIsOpen) mb | 72 | sIsConnected (Restricted mb sock) = maybe (NS.isConnected sock) (hIsOpen) mb |
101 | sIsBound (Restricted mb sock) = NS.isBound sock | ||
102 | sIsListening (Restricted mb sock) = NS.isListening sock | ||
103 | sIsReadable (Restricted mb sock) = NS.isReadable sock | ||
104 | sIsWritable (Restricted mb sock) = NS.isWritable sock | ||
105 | sClose (Restricted mb sock) = maybe (NS.close sock) (\h -> hClose h >> NS.close sock) mb | ||
106 | #else | 73 | #else |
107 | sIsConnected (Restricted mb sock) = maybe (NS.sIsConnected sock) (hIsOpen) mb | 74 | sIsConnected (Restricted mb sock) = maybe (NS.sIsConnected sock) (hIsOpen) mb |
108 | sIsBound (Restricted mb sock) = NS.sIsBound sock | ||
109 | sIsListening (Restricted mb sock) = NS.sIsListening sock | ||
110 | sIsReadable (Restricted mb sock) = NS.sIsReadable sock | ||
111 | sIsWritable (Restricted mb sock) = NS.sIsWritable sock | ||
112 | sClose (Restricted mb sock) = maybe (NS.sClose sock) (\h -> hClose h >> NS.sClose sock) mb | ||
113 | #endif | 75 | #endif |
114 | 76 | ||
115 | -- | Create a 'RestrictedSocket' that explicitly disallows sending or | 77 | -- | Create a 'RestrictedSocket' that explicitly disallows sending or |