network-fancy 0.1.4 → 0.1.5
raw patch · 2 files changed
+24/−11 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Network.Fancy: dgramServer :: (StringLike packet) => ServerSpec -> (packet -> Address -> IO [packet]) -> IO [ThreadId]
+ Network.Fancy: dgramServer :: StringLike packet => ServerSpec -> (packet -> Address -> IO [packet]) -> IO [ThreadId]
- Network.Fancy: recv :: (StringLike string) => Socket -> Int -> IO string
+ Network.Fancy: recv :: StringLike string => Socket -> Int -> IO string
- Network.Fancy: send :: (StringLike string) => Socket -> string -> IO ()
+ Network.Fancy: send :: StringLike string => Socket -> string -> IO ()
Files
- Network/Fancy.hsc +19/−10
- network-fancy.cabal +5/−1
Network/Fancy.hsc view
@@ -28,11 +28,12 @@ import Numeric(showHex) import System.IO(Handle, hClose, IOMode(ReadWriteMode)) import System.IO.Unsafe(unsafeInterleaveIO)-import GHC.Handle(fdToHandle')-#if __GLASGOW_HASKELL__ <= 610 import System.Posix.Internals hiding(c_close)-#else+#if __GLASGOW_HASKELL__ > 610 import GHC.IO.Device+import GHC.IO.Handle.FD(fdToHandle')+#else+import GHC.Handle(fdToHandle') #endif #ifdef WINDOWS import GHC.Conc(asyncDoProc)@@ -70,6 +71,14 @@ #endif /* WINDOWS */ +setNonBlockingFD' :: FD -> IO ()+setNonBlockingFD' =+#if __GLASGOW_HASKELL__ < 611+ System.Posix.Internals.setNonBlockingFD+#else+ flip System.Posix.Internals.setNonBlockingFD True+#endif+ type HostName = String data Address = IP HostName Int -- ^ Host name and port, either IPv4 or IPv6.@@ -175,7 +184,7 @@ connect stype (SA sa len) = do fam <- getFamily (SA sa len) s <- throwErrnoIfMinus1 "socket" $ c_socket fam stype 0- setNonBlockingFD s+ setNonBlockingFD' s let loop = do r <- withForeignPtr sa $ \ptr -> c_connect s ptr (fromIntegral len) err <- getErrno case r of@@ -280,7 +289,7 @@ return ((SA sa sal):rest) getAI :: IO (Ptr AddrInfoT) getAI = allocaBytes (#size struct addrinfo) $ \hints -> do- B.memset hints 0 (#size struct addrinfo)+ _ <- B.memset hints 0 (#size struct addrinfo) (#poke struct addrinfo, ai_flags) hints flags (#poke struct addrinfo, ai_family) hints fam (#poke struct addrinfo, ai_socktype) hints typ@@ -381,12 +390,12 @@ forM sas $ \sa -> do fam <- getFamily sa sock <- throwErrnoIfMinus1 "socket" $ c_socket fam sockStream 0- setNonBlockingFD sock+ setNonBlockingFD' sock let socket = Socket sock let on :: CInt on = 1 os = fromIntegral $ sizeOf on- with on $ \onptr -> c_setsockopt sock (#const SOL_SOCKET) (#const SO_REUSEADDR) onptr os+ _ <- with on $ \onptr -> c_setsockopt sock (#const SOL_SOCKET) (#const SO_REUSEADDR) onptr os bind socket sa listen socket 128 let loop = do (s,psa) <- accept socket sa@@ -430,7 +439,7 @@ (#peek struct network_fancy_aaccept, s) ptr #endif- setNonBlockingFD s+ setNonBlockingFD' s return (Socket s,SA sa len) foreign import CALLCONV SAFE_ON_WIN "accept" c_accept :: CInt -> Ptr () -> Ptr (SLen) -> IO CInt@@ -449,12 +458,12 @@ forM sas $ \sa -> do fam <- getFamily sa sock <- throwErrnoIfMinus1 "socket" $ c_socket fam sockDgram 0- setNonBlockingFD sock+ setNonBlockingFD' sock let socket = Socket sock let on :: CInt on = 1 os = fromIntegral $ sizeOf on- with on $ \onptr -> c_setsockopt sock (#const SOL_SOCKET) (#const SO_REUSEADDR) onptr os+ _ <- with on $ \onptr -> c_setsockopt sock (#const SOL_SOCKET) (#const SO_REUSEADDR) onptr os bind socket sa let loop = do (str,psa) <- recvFrom socket (recvSize ss) sa a <- unsafeInterleaveIO $ case reverseAddress ss of
network-fancy.cabal view
@@ -1,5 +1,5 @@ Name: network-fancy-Version: 0.1.4+Version: 0.1.5 Synopsis: Networking support with a cleaner API Description: Networking support with a cleaner API License: BSD3@@ -10,6 +10,10 @@ Maintainer: taruti@taruti.net Build-Type: Simple Cabal-version: >= 1.6+Homepage: http://github.com/taruti/network-fancy+Source-repository head+ type: git+ location: http://github.com/taruti/network-fancy Library Build-Depends: base == 4.*, bytestring