splice-0.3.2: src/Network/Socket/Splice.hs
{- |
This library implements most efficient socket to socket data transfer loops
for proxy servers on each operating system.
On GNU\/Linux, it uses and exposes the zero-copy @splice()@ system call:
<http://kerneltrap.org/node/6505>.
On other operating systems, it currently falls back to a portable Haskell
implementation – which first allocates a constant-sized memory buffer in user
address, then enters an inner loop which uses 'System.IO.hGetBufSome'
and 'System.IO.hPutBuf' on this user-space buffer. This avoids tony of tiny
allocations as might otherwise be caused by 'Network.Socket.ByteString.recv'
and 'Network.Socket.ByteString.sendAll' from the @bytestring@ package.
-}
--
-- Module : Network.Socket.Splice
-- Copyright : (c) Cetin Sert 2012
-- License : BSD3
-- Maintainer : fusion@corsis.eu
-- Stability : stable
-- Portability : GHC-only, works on all operating systems
module Network.Socket.Splice (
module Network.Socket.Splice.Internal
) where
import Network.Socket.Splice.Internal