summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoe <joe@jerkface.net>2017-11-12 18:09:56 -0500
committerjoe <joe@jerkface.net>2017-11-12 18:09:56 -0500
commitd646a84764f46ee4f772d7c1f2edeecd9a18ec54 (patch)
tree0cf161f0eca2dc42a525ffa1bcacb604f6927942
parent4f32bb5db83291713411a5b9d82f7989b719e709 (diff)
Removed redundant SocketLike module.
-rw-r--r--Presence/LocalPeerCred.hs2
-rw-r--r--Presence/SocketLike.hs76
2 files changed, 1 insertions, 77 deletions
diff --git a/Presence/LocalPeerCred.hs b/Presence/LocalPeerCred.hs
index 6f7735dd..3396358e 100644
--- a/Presence/LocalPeerCred.hs
+++ b/Presence/LocalPeerCred.hs
@@ -18,7 +18,7 @@ import Data.Bits
18import System.Posix.Types 18import System.Posix.Types
19import System.Posix.Files 19import System.Posix.Files
20import Logging 20import Logging
21import SocketLike 21import Network.SocketLike
22import ControlMaybe 22import ControlMaybe
23 23
24xs ?? n | n < 0 = Nothing 24xs ?? n | n < 0 = Nothing
diff --git a/Presence/SocketLike.hs b/Presence/SocketLike.hs
deleted file mode 100644
index af0249ae..00000000
--- a/Presence/SocketLike.hs
+++ /dev/null
@@ -1,76 +0,0 @@
1{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2module SocketLike
3 ( SocketLike
4 , getSocketName
5 , getPeerName
6 , getPeerCred
7 , socketPort
8 , sIsConnected
9 , sIsBound
10 , sIsListening
11 , sIsReadable
12 , sIsWritable
13 , sClose
14 , RestrictedSocket
15 , restrictSocket
16 , restrictHandleSocket
17 , PortNumber
18 , SockAddr(..)
19 , CUInt
20 ) where
21
22import Network.Socket
23 ( PortNumber
24 , SockAddr
25 )
26import Foreign.C.Types ( CUInt )
27
28import qualified Network.Socket as NS
29import System.IO (Handle,hClose)
30
31class SocketLike sock where
32 getSocketName :: sock -> IO SockAddr
33 getPeerName :: sock -> IO SockAddr
34 getPeerCred :: sock -> IO (CUInt, CUInt, CUInt)
35 socketPort :: sock -> IO PortNumber
36 sIsConnected :: sock -> IO Bool
37 sIsBound :: sock -> IO Bool
38 sIsListening :: sock -> IO Bool
39 sIsReadable :: sock -> IO Bool
40 sIsWritable :: sock -> IO Bool
41 sClose :: sock -> IO ()
42
43instance SocketLike NS.Socket where
44 getSocketName = NS.getSocketName
45 getPeerName = NS.getPeerName
46 getPeerCred = NS.getPeerCred
47 socketPort = NS.socketPort
48 sIsConnected = NS.sIsConnected -- warning: this is always False if the socket
49 -- was converted to a Handle
50 sIsBound = NS.sIsBound
51 sIsListening = NS.sIsListening
52 sIsReadable = NS.sIsReadable
53 sIsWritable = NS.sIsWritable
54
55 sClose = NS.sClose
56
57-- newtype RestrictedSocket = Restricted NS.Socket deriving (SocketLike,Show)
58data RestrictedSocket = Restricted (Maybe Handle) NS.Socket deriving Show
59
60instance SocketLike RestrictedSocket where
61 getSocketName (Restricted mb sock) = NS.getSocketName sock
62 getPeerName (Restricted mb sock) = NS.getPeerName sock
63 getPeerCred (Restricted mb sock) = NS.getPeerCred sock
64 socketPort (Restricted mb sock) = NS.socketPort sock
65 sIsConnected (Restricted mb sock) = NS.sIsConnected sock
66 sIsBound (Restricted mb sock) = NS.sIsBound sock
67 sIsListening (Restricted mb sock) = NS.sIsListening sock
68 sIsReadable (Restricted mb sock) = NS.sIsReadable sock
69 sIsWritable (Restricted mb sock) = NS.sIsWritable sock
70 sClose (Restricted mb sock) = maybe (NS.sClose sock) (\h -> hClose h >> NS.sClose sock) mb
71
72restrictSocket :: NS.Socket -> RestrictedSocket
73restrictSocket socket = Restricted Nothing socket
74
75restrictHandleSocket :: Handle -> NS.Socket -> RestrictedSocket
76restrictHandleSocket h socket = Restricted (Just h) socket