### Method

# Gio DatagramBased condition_check

since: 2.48

#### Declaration

    GIOCondition
    g_datagram_based_condition_check (
      GDatagramBased* datagram_based,
      GIOCondition condition
    )

#### Description

Checks on the readiness of `datagram_based` to perform operations. The operations specified in `condition` are checked for and masked against the currently-satisfied conditions on `datagram_based`. The result is returned.

`G_IO_IN` will be set in the return value if data is available to read with g_datagram_based_receive_messages(), or if the connection is closed remotely (EOS); and if the datagram_based has not been closed locally using some implementation-specific method (such as `g_socket_close()` or `g_socket_shutdown()` with `shutdown_read` set, if it’s a `GSocket`).

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

`G_IO_OUT` will be set if it is expected that at least one byte can be sent using `g_datagram_based_send_messages()` without blocking. It will not be set if the datagram_based has been closed locally.

`G_IO_HUP` will be set if the connection has been closed locally.

`G_IO_ERR` will be set if there was an asynchronous error in transmitting data previously enqueued using g_datagram_based_send_messages().

Note that on Windows, it is possible for an operation to return `G_IO_ERROR_WOULD_BLOCK` even immediately after `g_datagram_based_condition_check()` has claimed that the `GDatagramBased` is ready for writing. Rather than calling `g_datagram_based_condition_check()` and then writing to the `GDatagramBased` if it succeeds, it is generally better to simply try writing right away, and try again later if the initial attempt returns `G_IO_ERROR_WOULD_BLOCK`.

It is meaningless to specify `G_IO_ERR` or `G_IO_HUP` in `condition`; these conditions will always be set in the output if they are true. Apart from these flags, the output is guaranteed to be masked by `condition`.

This call never blocks.

Available since: 2.48

#### Parameters

`condition`

  Type: `GIOCondition`

  A `GIOCondition` mask to check.

#### Return value

Type: `GIOCondition`

The `GIOCondition` mask of the current state.