{-# LANGUAGE CPP #-} module Network.Socket.SendFile.Internal ( sendFile, sendFile', sendFileMode ) where import System.IO ( Handle, IOMode(..), hFileSize, withBinaryFile ) #if defined(WIN32_SENDFILE) import Network.Socket.SendFile.Win32 (sendFile') sendFileMode :: String sendFileMode = "WIN32_SENDFILE" #endif #if defined(LINUX_SENDFILE) import Network.Socket.SendFile.Linux (sendFile') sendFileMode :: String sendFileMode = "LINUX_SENDFILE" #endif #if defined(PORTABLE_SENDFILE) import Network.Socket.SendFile.Portable (sendFile') sendFileMode :: String sendFileMode = "PORTABLE_SENDFILE" #endif sendFile :: Handle -> FilePath -> IO () sendFile outp infp = withBinaryFile infp ReadMode $ \inp -> do count <- hFileSize inp sendFile' outp inp count