on master help sign in
unifying readSendFile and preadSendFile.
commit72032ecb342ca4617cfbfc9a108e7b13a7ecf72b authorKazu Yamamoto <kazu@iij.ad.jp> dateThu 11 Jun 2015, 14:49 (11 years ago) parentf70fe24
1 file changed+12−7
warp/Network/Wai/Handler/Warp/SendFile.hs+12−7
warp/Network/Wai/Handler/Warp/SendFile.hs+12−7
@@ -2,7 +2,6 @@
22
33module Network.Wai.Handler.Warp.SendFile where
44
5−import Control.Monad (when, void)
65import Data.ByteString.Internal
76import Data.Word (Word8)
87import Foreign.ForeignPtr (newForeignPtr_, withForeignPtr)
@@ -10,14 +9,18 @@ import Network.Sendfile
109import Network.Socket (Socket)
1110import Network.Wai.Handler.Warp.Buffer
1211import Network.Wai.Handler.Warp.Types
13−import qualified System.IO as IO
1412
15−#ifndef WINDOWS
13+#ifdef WINDOWS
14+import Control.Monad (when, void)
15+import qualified System.IO as IO
16+#else
1617import Foreign.C.Types
1718import Foreign.Ptr (Ptr, castPtr, plusPtr)
1819import System.Posix.Types
1920#endif
2021
22+----------------------------------------------------------------
23+
2124defaultSendFile :: Socket -> SendFile
2225#ifdef SENDFILEFD
2326defaultSendFile s fid off len act hdr = case mfid of
@@ -33,6 +36,8 @@ defaultSendFile s fid off len act hdr =
3336 path = fileIdPath fid
3437#endif
3538
39+----------------------------------------------------------------
40+
3641packHeader :: Buffer -> BufSize -> (ByteString -> IO ())
3742 -> IO () -> [ByteString]
3843 -> Int
@@ -57,6 +62,7 @@ packHeader buf siz send hook (PS bsfp off len : bss) n
5762 where
5863 room = siz - n
5964
65+#ifdef WINDOWS
6066readSendFile :: Buffer -> BufSize -> (ByteString -> IO ()) -> SendFile
6167readSendFile buf siz send fid off0 len0 hook headers = do
6268 fptr <- newForeignPtr_ buf
@@ -82,10 +88,9 @@ readSendFile buf siz send fid off0 len0 hook headers = do
8288 send bs
8389 void $ hook
8490 loop fptr h $ len - fromIntegral n
85−
86−#ifndef WINDOWS
87−preadSendFile :: Buffer -> BufSize -> (ByteString -> IO ()) -> SendFile
88−preadSendFile buf siz send fid off0 len0 hook headers = do
91+#else
92+readSendFile :: Buffer -> BufSize -> (ByteString -> IO ()) -> SendFile
93+readSendFile buf siz send fid off0 len0 hook headers = do
8994 fptr <- newForeignPtr_ buf
9095 hn <- packHeader buf siz send hook headers 0
9196 let room = siz - hn