Writes data to a socket from multiple buffers.
#include <prio.h> PRInt32 PR_Writev( PRFileDesc *fd, PRIOVec *iov, PRInt32 size, PRIntervalTime timeout); #define PR_MAX_IOVECTOR_SIZE 16
The function has the following parameters:
fd
PRFileDesc
object for a socket.iov
PRIOVec
structures that describe the buffers to write from.size
PRIOVec
structures in the iov
array. The value of this parameter must not be greater than PR_MAX_IOVECTOR_SIZE
. If it is, the function will fail and the error will be set to PR_BUFFER_OVERFLOW_ERROR
.timeout
PRIntervalTime
describing the time limit for completion of the entire write operation.One of the following values:
PR_GetError
.The thread calling PR_Writev
blocks until all the data is written or the write operation fails. Therefore, the return value is equal to either the sum of all the buffer lengths (on success) or -1 (on failure). Note that if PR_Writev
returns -1, part of the data may have been written before an error occurred. If the timeout parameter is not PR_INTERVAL_NO_TIMEOUT
and all the data cannot be written in the specified interval, PR_Writev
returns -1 with the error code PR_IO_TIMEOUT_ERROR
.
This is the type definition for PRIOVec
:
typedef struct PRIOVec { char *iov_base; int iov_len; } PRIOVec;
The PRIOVec
structure has the following fields:
iov_base
iov_len