Summary
Set disposition of writes.
Declaration
#include <zircon/syscalls.h>
zx_status_t zx_socket_set_disposition(zx_handle_t handle,
uint32_t disposition,
uint32_t disposition_peer);
Description
zx_socket_set_disposition
sets the disposition of
zx_socket_write()
calls for a socket handle and its peer.
Valid disposition flags that can be used:
ZX_SOCKET_DISPOSITION_WRITE_DISABLED
- Disable writes for the specified
socket endpoint. Once set, writes to the specified socket endpoint will fail
with ZX_ERR_BAD_STATE
. Reads from the specified socket endpoint will
succeed until all data buffered in the specified socket endpoint is consumed,
and fail with ZX_ERR_BAD_STATE
thereafter.
ZX_SOCKET_DISPOSITION_WRITE_ENABLED
- Enable writes for the specified
socket endpoint. Once set, writes to and reads from the specified socket
endpoint will behave as specified in zx_socket_write()
and
zx_socket_read()
, respectively.
It is invalid to specify ZX_SOCKET_DISPOSITION_WRITE_ENABLED
on a socket
endpoint that has buffered data; doing so will result in
zx_socket_set_disposition
returning ZX_ERR_BAD_STATE
and no action being
taken.
It is invalid to specify both ZX_SOCKET_DISPOSITION_WRITE_DISABLED
and
ZX_SOCKET_DISPOSITION_WRITE_ENABLED
in disposition or disposition_peer;
doing so will result in zx_socket_set_disposition
returning
ZX_ERR_INVALID_ARGS
and no action being taken.
Rights
handle must be of type ZX_OBJ_TYPE_SOCKET
and have ZX_RIGHT_MANAGE_SOCKET
.
Return value
zx_socket_set_disposition()
returns ZX_OK
on success.
Errors
ZX_ERR_BAD_HANDLE
handle is not a valid handle.
ZX_ERR_BAD_STATE
disposition or disposition_peer contains
ZX_SOCKET_DISPOSITION_WRITE_ENABLED
and handle refers to a socket with
buffered data on the specified socket endpoint.
ZX_ERR_WRONG_TYPE
handle is not a socket handle.
ZX_ERR_ACCESS_DENIED
handle does not have ZX_RIGHT_MANAGE_SOCKET
.
ZX_ERR_INVALID_ARGS
disposition or disposition_peer contains flags
outside of the ones listed above or an invalid combination of flags.