ranch_transport:sendfile(3)

NAME

ranch_transport:sendfile - Send a file on the socket

DESCRIPTION
    sendfile(Transport :: module(),
             Socket    :: ranch_transport:socket(),
             File      :: file:name_all() | file:fd(),
             Offset    :: non_neg_integer(),
             Bytes     :: non_neg_integer(),
             Opts      :: ranch_transport:sendfile_opts())
        -> {ok, SentBytes :: non_neg_integer()} | {error, atom()}

Send a file on the socket.

The file may be sent full or in parts, and may be specified by its filename or by an already open file descriptor.

This function emulates the function file:sendfile/2,4,5 and may be used when transports are not manipulating TCP directly.

ARGUMENTS

Transport
    The transport module.

Socket
    The socket.

File
    The filename or file descriptor for the file to be sent.

Offset
    Start position in the file, in bytes.

Bytes
    Length in bytes.

Opts
    Additional options.

RETURN VALUE

The number of bytes actually sent is returned on success inside an ok tuple.

An error tuple is returned otherwise.

CHANGELOG
    • 1.6: The type of the File argument was extended.

EXAMPLES

Implement Transport:sendfile using the fallback
    sendfile(Socket, Filename) ->
        sendfile(Socket, Filename, 0, 0, []).

    sendfile(Socket, File, Offset, Bytes) ->
        sendfile(Socket, File, Offset, Bytes, []).

    sendfile(Socket, File, Offset, Bytes, Opts) ->
        ranch_transport:sendfile(?MODULE, Socket,
            File, Offset, Bytes, Opts).

SEE ALSO

ranch_transport(3)