@@ -23,8 +23,8 @@ module Streamly.Internal.Network.Socket
23 , useSocketM
23 , useSocketM
24 , useSocket
24 , useSocket
26− -- * Listen for incoming connections
26+ -- * Accept connections
28 , connections
28 , connections
30 -- * Read from connection
30 -- * Read from connection
@@ -73,10 +73,9 @@ import Foreign.Storable (Storable(..))
73import GHC.ForeignPtr (mallocPlainForeignPtrBytes)
73import GHC.ForeignPtr (mallocPlainForeignPtrBytes)
74import Network.Socket (sendBuf, recvBuf)
74import Network.Socket (sendBuf, recvBuf)
75import Network.Socket
75import Network.Socket
76− (Socket, PortNumber, SocketOption(..), Family(..), SockAddr(..),
76+ (Socket, SocketOption(..), Family(..), SockAddr(..),
78− withSocketsDo, SocketType(..), socket, accept, bind,
77+ ProtocolNumber, withSocketsDo, SocketType(..), socket, bind,
79− defaultProtocol, setSocketOption, maxListenQueue, tupleToHostAddress)
78+ setSocketOption)
80#if MIN_VERSION_network(3,1,0)
79#if MIN_VERSION_network(3,1,0)
81import Network.Socket (withFdSocket)
80import Network.Socket (withFdSocket)
@@ -124,7 +123,7 @@ useSocket :: (IsStream t, MonadCatch m, MonadIO m)
124useSocket sk f = S.finally (liftIO $ Net.close sk) (f sk)
123useSocket sk f = S.finally (liftIO $ Net.close sk) (f sk)
126-------------------------------------------------------------------------------
125-------------------------------------------------------------------------------
127−-- Listen (Unfolds)
126+-- Accept (Unfolds)
128-------------------------------------------------------------------------------
127-------------------------------------------------------------------------------
130-- XXX Protocol specific socket options should be separated from socket level
129-- XXX Protocol specific socket options should be separated from socket level
@@ -158,20 +157,20 @@ listenTuples = Unfold step inject
158 return listener
157 return listener
160 step listener = do
159 step listener = do
161− r <- liftIO $ accept listener
160+ r <- liftIO $ Net.accept listener
162 -- XXX error handling
161 -- XXX error handling
163 return $ D.Yield r listener
162 return $ D.Yield r listener
165-- | Unfold a three tuple @(listenQLen, spec, addr)@ into a stream of connected
164-- | Unfold a three tuple @(listenQLen, spec, addr)@ into a stream of connected
165+-- protocol sockets corresponding to incoming connections. @listenQLen@ is the
166−-- protocol sockets. @listenQLen@ is the maximum number of pending connections
166+-- maximum number of pending connections in the backlog. @spec@ is the socket
167−-- in the backlog. @spec@ is the socket protocol and options specification and
167+-- protocol and options specification and @addr@ is the protocol address where
168−-- @addr@ is the protocol address where the server listens for incoming
168+-- the server listens for incoming connections.
171-- @since 0.7.0
170-- @since 0.7.0
172−{-# INLINE listen #-}
171+{-# INLINE accept #-}
173−listen :: MonadIO m => Unfold m (Int, SockSpec, SockAddr) Socket
172+accept :: MonadIO m => Unfold m (Int, SockSpec, SockAddr) Socket
174−listen = UF.map fst listenTuples
173+accept = UF.map fst listenTuples
176-------------------------------------------------------------------------------
175-------------------------------------------------------------------------------
177-- Listen (Streams)
176-- Listen (Streams)
@@ -184,12 +183,12 @@ recvConnectionTuplesWith tcpListenQ spec addr = S.unfoldrM step Nothing
185 step Nothing = do
184 step Nothing = do
186 listener <- liftIO $ initListener tcpListenQ spec addr
185 listener <- liftIO $ initListener tcpListenQ spec addr
187− r <- liftIO $ accept listener
186+ r <- liftIO $ Net.accept listener
188 -- XXX error handling
187 -- XXX error handling
189 return $ Just (r, Just listener)
188 return $ Just (r, Just listener)
191 step (Just listener) = do
190 step (Just listener) = do
192− r <- liftIO $ accept listener
191+ r <- liftIO $ Net.accept listener
193 -- XXX error handling
192 -- XXX error handling
194 return $ Just (r, Just listener)
193 return $ Just (r, Just listener)