]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/SocketLike.hs
Code clean-up (and close ditz/lucu-1)
[Lucu.git] / Network / HTTP / Lucu / SocketLike.hs
index f64e24bcad680f86d4ec3067f4f9d583558fcd68..b99811f3bba095f5fc6a586f7b5a00bb2750c23d 100644 (file)
@@ -11,21 +11,28 @@ import qualified System.IO as I
 
 class (HandleLike (Handle s)) => SocketLike s where
     type Handle s :: *
-    accept :: s -> IO (Handle s, So.SockAddr)
+    accept        :: s -> IO (Handle s, So.SockAddr)
+    socketPort    :: s -> IO So.PortNumber
 
 
 instance SocketLike So.Socket where
     type Handle So.Socket = I.Handle
+
     accept soSelf
         = do (soPeer, addr) <- So.accept soSelf
              hPeer          <- So.socketToHandle soPeer I.ReadWriteMode
              return (hPeer, addr)
 
+    socketPort = So.socketPort
+
 
 instance SocketLike (SSL.SSLContext, So.Socket) where
     type Handle (SSL.SSLContext, So.Socket) = SSL.SSL
+
     accept (ctx, soSelf)
         = do (soPeer, addr) <- So.accept soSelf
              ssl            <- SSL.connection ctx soPeer
              SSL.accept ssl
              return (ssl, addr)
+
+    socketPort = So.socketPort . snd
\ No newline at end of file