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

Safe HaskellNone

Network.Sendfile

Description

Cross platform library for the sendfile system call. This library tries to call minimum system calls which are the bottleneck of web servers.

Synopsis

Documentation

sendfile :: Socket -> FilePath -> FileRange -> IO () -> IO ()Source

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.

sendfileWithHeader :: Socket -> FilePath -> FileRange -> IO () -> [ByteString] -> IO ()Source

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

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

The fifth header is sent with send() + the MSG_MORE flag. If the file is small enough, the header and the file is send in a single TCP packet.

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 :: Socket -> Fd -> FileRange -> IO () -> IO ()Source

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.

sendfileFdWithHeader :: Socket -> Fd -> FileRange -> IO () -> [ByteString] -> IO ()Source

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

  • EntireFile -- send(), stat() and sendfile()
  • PartOfFile -- send() and sendfile()

The fifth header is sent with send() + the MSG_MORE flag. If the file is small enough, the header and the file is send in a single TCP packet.

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 Source

File range for sendfile.