Network.Socket.SendFile
Description
A cross-platform wrapper for sendfile -- this implements an available operating-system call if supported, otherwise it falls back to a portable haskell implementation.
Two interfaces are provided for both the unsafe and safe sets of functions. The first interface accepts an output socket/handle and the path of the file you want to send; sendFile and unsafeSendFile comprise this interface. The second interface accepts an output socket/handle, a handle to the file you want to send, an offset, and the number of bytes you want to send; sendFile' and unsafeSendFile' comprise this interface.
For consistent read/write behavior with either sendFile' or unsafeSendFile', the input handle should be opened in Binary mode rather than Text mode.
Documentation
Safe functions (recommended)
Arguments
| :: Socket | The output socket |
| -> FilePath | The input file handle |
| -> Offset | The offset to start at |
| -> ByteCount | The number of bytes to send |
| -> IO () |
A more powerful interface than sendFile which accepts a starting offset, and the bytecount to send; the offset and the count must be a positive integer. The initial position of the input file handle matters not since the offset is absolute, and the final position may be different depending on the platform -- no assumptions can be made.
Utility functions
Arguments
| :: String | The mode that sendfile was compiled with |
Returns the mode that sendfile was compiled with. Mainly for debugging use.
| Possible values are WIN32_SENDFILE, LINUX_SENDFILE, FREEBSD_SENDFILE,
| DARWIN_SENDFILE, and PORTABLE_SENDFILE.