on master help sign in
sharing a buffer both in receiving and in sending.
commite9470ca1368daa94c39f01c02b32143e5f5f0e43 authorKazu Yamamoto <kazu@iij.ad.jp> dateSat 16 Nov 2013, 10:02 (13 years ago) parent06355b1
4 files changed+9−13
warp/Network/Wai/Handler/Warp/Buffer.hs+2−5 warp/Network/Wai/Handler/Warp/Response.hs+1−1 warp/Network/Wai/Handler/Warp/Run.hs+5−6 warp/Network/Wai/Handler/Warp/Types.hs+1−1
warp/Network/Wai/Handler/Warp/Buffer.hs+2−5
@@ -9,11 +9,8 @@ import Foreign.Ptr (Ptr, plusPtr)
99type Buffer = Ptr Word8
1010
1111-- FIXME come up with good values here
12−bytesPerRead :: Int
13−bytesPerRead = 4096
14−
15−bytesPerWrite :: Int
16−bytesPerWrite = 4096
12+bufferSize :: Int
13+bufferSize = 4096
1714
1815allocateBuffer :: Int -> IO Buffer
1916allocateBuffer = mallocBytes
warp/Network/Wai/Handler/Warp/Response.hs+1−1
@@ -212,7 +212,7 @@ sendRsp conn ver s hs (RspBuilder b needsChunked) = do
212212sendRsp conn ver s hs (RspSource withBodyFlush needsChunked th) = withBodyFlush $ \bodyFlush -> do
213213 header <- composeHeaderBuilder ver s hs needsChunked
214214 let src = yield header >> cbody bodyFlush
215− buffer = connWriteBuffer conn
215+ buffer = connBuffer conn
216216 src $$ unsafeBuilderToByteString (return buffer) =$ connSink conn th
217217 where
218218 cbody bodyFlush = if needsChunked then body $= chunk else body
warp/Network/Wai/Handler/Warp/Run.hs+5−6
@@ -44,16 +44,15 @@ import Network.Socket (fdSocket)
4444-- | Default action value for 'Connection'.
4545socketConnection :: Socket -> IO Connection
4646socketConnection s = do
47− rbuf <- allocateBuffer bytesPerRead
48− wbuf <- allocateBuffer bytesPerWrite
49− wBlazeBuf <- toBlazeBuffer wbuf bytesPerWrite
47+ buf <- allocateBuffer bufferSize
48+ blazeBuf <- toBlazeBuffer buf bufferSize
5049 return Connection {
5150 connSendMany = Sock.sendMany s
5251 , connSendAll = Sock.sendAll s
5352 , connSendFile = defaultSendFile s
54− , connClose = sClose s >> freeBuffer rbuf >> freeBuffer wbuf
55− , connRecv = receive s rbuf bytesPerRead
56− , connWriteBuffer = wBlazeBuf
53+ , connClose = sClose s >> freeBuffer buf
54+ , connRecv = receive s buf bufferSize
55+ , connBuffer = blazeBuf
5756 , connSendFileOverride = Override s
5857 }
5958
warp/Network/Wai/Handler/Warp/Types.hs+1−1
@@ -66,7 +66,7 @@ data Connection = Connection
6666 , connSendFile :: FilePath -> Integer -> Integer -> IO () -> [ByteString] -> IO () -- ^ filepath, offset, length, hook action, HTTP headers
6767 , connClose :: IO ()
6868 , connRecv :: IO ByteString
69− , connWriteBuffer :: B.Buffer
69+ , connBuffer :: B.Buffer
7070 , connSendFileOverride :: ConnSendFileOverride
7171 }
7272