DatagramBasedIF.sendMessages

Send one or more data messages from @datagram_based in one go.

@messages must point to an array of #GOutputMessage structs and @num_messages must be the length of this array. Each #GOutputMessage contains an address to send the data to, and a pointer to an array of #GOutputVector structs to describe the buffers that the data to be sent for each message will be gathered from.

@flags modify how the message is sent. The commonly available arguments for this are available in the #GSocketMsgFlags enum, but the values there are the same as the system values, and the flags are passed in as-is, so you can pass in system-specific flags too.

The other members of #GOutputMessage are treated as described in its documentation.

If @timeout is negative the call will block until @num_messages have been sent, @cancellable is cancelled, or an error occurs.

If @timeout is 0 the call will send up to @num_messages without blocking, or will return %G_IO_ERROR_WOULD_BLOCK if there is no space to send messages.

If @timeout is positive the call will block on the same conditions as if @timeout were negative. If the timeout is reached before any messages are sent, %G_IO_ERROR_TIMED_OUT is returned, otherwise it will return the number of messages sent before timing out.

To be notified when messages can be sent, wait for the %G_IO_OUT condition. Note though that you may still receive %G_IO_ERROR_WOULD_BLOCK from g_datagram_based_send_messages() even if you were previously notified of a %G_IO_OUT condition. (On Windows in particular, this is very common due to the way the underlying APIs work.)

If the connection is shut down or closed (by calling g_socket_close() or g_socket_shutdown() with @shutdown_write set, if it’s a #GSocket, for example), all calls to this function will return %G_IO_ERROR_CLOSED.

On error -1 is returned and @error is set accordingly. An error will only be returned if zero messages could be sent; otherwise the number of messages successfully sent before the error will be returned. If @cancellable is cancelled, %G_IO_ERROR_CANCELLED is returned as with any other error.

interface DatagramBasedIF
int
sendMessages
(
GOutputMessage[] messages
,
int flags
,
long timeout
,)

Parameters

messages GOutputMessage[]

an array of #GOutputMessage structs

flags int

an int containing #GSocketMsgFlags flags

timeout long

the maximum time (in microseconds) to wait, 0 to not block, or -1 to block indefinitely

cancellable Cancellable

a %GCancellable

Return Value

Type: int

number of messages sent, or -1 on error. Note that the number of messages sent may be smaller than @num_messages if @timeout is zero or positive, or if @num_messages was larger than UIO_MAXIOV (1024), in which case the caller may re-try to send the remaining messages.

Throws

GException on failure.

Meta

Since

2.48