摘要
设置写入操作的处理方式。
声明
#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
,没有任何操作
。
同时指定 ZX_SOCKET_DISPOSITION_WRITE_DISABLED
和
disposition 或 disposition_peer 中的 ZX_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
handle 不是有效的句柄。
ZX_ERR_BAD_STATE
disposition 或 disposition_peer 包含
ZX_SOCKET_DISPOSITION_WRITE_ENABLED
和 handle 是指具有
指定套接字端点上已缓冲的数据。
ZX_ERR_WRONG_TYPE
handle 不是套接字句柄。
ZX_ERR_ACCESS_DENIED
句柄没有 ZX_RIGHT_MANAGE_SOCKET
。
ZX_ERR_INVALID_ARGS
disposition 或 disposition_peer 包含标志
或标志组合无效。