zx_socket_set_disposition

总结

设置写入的处置方式。

声明

#include <zircon/syscalls.h>

zx_status_t zx_socket_set_disposition(zx_handle_t handle,
                                      uint32_t disposition,
                                      uint32_t disposition_peer);

说明

zx_socket_set_disposition 用于设置套接字句柄及其对等方的 zx_socket_write() 调用的处理方式。

可以使用的有效处置标志:

ZX_SOCKET_DISPOSITION_WRITE_DISABLED - 停用对指定的套接字端点的写入。设置后,对指定的套接字端点的写入操作将失败并显示 ZX_ERR_BAD_STATE。从指定的套接字端点执行的读取操作将会成功,直到使用了指定套接字端点中缓冲的所有数据,之后会失败并显示 ZX_ERR_BAD_STATE

ZX_SOCKET_DISPOSITION_WRITE_ENABLED - 为指定的套接字端点启用写入功能。设置完成后,对指定套接字端点的读写操作将分别按照 zx_socket_write()zx_socket_read() 中指定的方式执行。

在具有已缓冲数据的套接字端点上指定 ZX_SOCKET_DISPOSITION_WRITE_ENABLED 是无效的;这样做会导致 zx_socket_set_disposition 返回 ZX_ERR_BAD_STATE,并且不执行任何操作。

dispositiondisposition_peer 中同时指定 ZX_SOCKET_DISPOSITION_WRITE_DISABLEDZX_SOCKET_DISPOSITION_WRITE_ENABLED 是无效的;这样做会导致 zx_socket_set_disposition 返回 ZX_ERR_INVALID_ARGS,并且不执行任何操作。

权限

handle 必须为 ZX_OBJ_TYPE_SOCKET 类型,且具有 ZX_RIGHT_MANAGE_SOCKET

返回值

zx_socket_set_disposition() 会在成功时返回 ZX_OK

错误

ZX_ERR_BAD_HANDLE 句柄不是有效的句柄。

ZX_ERR_BAD_STATE dispositiondisposition_peer 包含 ZX_SOCKET_DISPOSITION_WRITE_ENABLEDhandle 是指在指定套接字端点上具有已缓冲数据的套接字。

ZX_ERR_WRONG_TYPE handle 不是套接字句柄。

ZX_ERR_ACCESS_DENIED 句柄没有 ZX_RIGHT_MANAGE_SOCKET

ZX_ERR_INVALID_ARGS dispositiondisposition_peer 包含上述标记之外的标志或无效的标志组合。

另请参阅