]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/SocketLike.hs
Added a configuration flag -fssl to enable SSL support. (default: off)
[Lucu.git] / Network / HTTP / Lucu / SocketLike.hs
index 915f32376eb17a3ae6a57eef443648698bc4d63b..998e4490761bfb6324f6d5bb03a47073ec5c25c4 100644 (file)
@@ -1,44 +1,47 @@
 {-# LANGUAGE
-    FlexibleContexts
+    CPP
+  , FlexibleContexts
   , FlexibleInstances
   , TypeFamilies
   , UnicodeSyntax
   #-}
+-- |Type class for things behaves like a 'So.Socket'.
 module Network.HTTP.Lucu.SocketLike
     ( SocketLike(..)
     )
     where
-
 import qualified Network.Socket as So
-import           Network.HTTP.Lucu.HandleLike
+import Network.HTTP.Lucu.HandleLike
+#if defined(HAVE_SSL)
 import qualified OpenSSL.Session as SSL
+import Prelude.Unicode
+#endif
 import qualified System.IO as I
 
-
-class (HandleLike (Handle s)) => SocketLike s where
-    type Handle s :: *
-    accept        :: s -> IO (Handle s, So.SockAddr)
-    socketPort    :: s -> IO So.PortNumber
-
+class (HandleLike (Handle s)) ⇒ SocketLike s where
+    type Handle s ∷ ★
+    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
+        = do (soPeer, addr)  So.accept soSelf
+             hPeer           So.socketToHandle soPeer I.ReadWriteMode
              return (hPeer, addr)
 
     socketPort = So.socketPort
 
-
+#if defined(HAVE_SSL)
 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
+        = 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
+    socketPort = So.socketPort  snd
+#endif