System.Linux.Sendfile

simple-sendfile-0.2.25: Cross platform library for the sendfile system call

Safe Haskell | None
Language | Haskell2010

System.Linux.Sendfile

Synopsis

- sendfile :: Fd -> ByteString -> FileRange -> IO () -> IO ()
- sendfileFd :: Fd -> Fd -> FileRange -> IO () -> IO ()
- data FileRange
  - = EntireFile
  - | PartOfFile {
    - rangeOffset :: Integer
    - rangeLength :: Integer
    }

# Documentation

sendfile :: Fd -> ByteString -> FileRange -> IO () -> IO () #

Simple binding for sendfile() of Linux. Used system calls:

- EntireFile -- open(), stat(), sendfile(), and close()
- PartOfFile -- open(), sendfile(), and close()

If the size of the file is unknown when sending the entire file, specifying PartOfFile is much faster.

The fourth action argument is called when a file is sent as chunks. Chucking is inevitable if the socket is non-blocking (this is the default) and the file is large. The action is called after a chunk is sent and bofore waiting the socket to be ready for writing.

sendfileFd :: Fd -> Fd -> FileRange -> IO () -> IO () #

Simple binding for sendfile() of Linux. Used system calls:

- EntireFile -- stat() and sendfile()
- PartOfFile -- sendfile()

If the size of the file is unknown when sending the entire file, specifying PartOfFile is much faster.

The fourth action argument is called when a file is sent as chunks. Chucking is inevitable if the socket is non-blocking (this is the default) and the file is large. The action is called after a chunk is sent and bofore waiting the socket to be ready for writing.

data FileRange #

File range for `sendfile`.

Constructors

EntireFile |
PartOfFile |
Fields rangeOffset :: Integer rangeLength :: Integer