《zookeeper c api中文翻译》由会员分享,可在线阅读,更多相关《zookeeper c api中文翻译(23页珍藏版)》请在金锄头文库上搜索。
1、1、错误码 ZOO_ERRORSZOK 正常返回ZSYSTEMERROR 系统或服务器端错误(System and server-side errors),服务器不会抛出该错误,该错误也只是用来标识错误范围的,即大于该错误值,且小于 ZAPIERROR 都是系统错误。ZRUNTIMEINCONSISTENCY 运行时非一致性错误。ZDATAINCONSISTENCY 数据非一致性错误。ZCONNECTIONLOSS Zookeeper 客户端与服务器端失去连接ZMARSHALLINGERROR 在编码和解码数据时出现错误ZUNIMPLEMENTED 该操作未实现/未执行ZOPERATIONTI
2、MEOUT 该操作超时ZBADARGUMENTS 非法参数错误ZINVALIDSTATE 非法句柄状态ZAPIERROR API 错误(API errors),服务器不会抛出该错误,该错误也只是用来标识错误范围的,错误值大于该值的标识 API 错误,而小于该值的标识 ZSYSTEMERROR。ZNONODE 节点不存在(Node does not exist)ZNOAUTH 没有经过授权(Not authenticated)ZBADVERSION 版本冲突 (Version conflict)ZNOCHILDRENFOREPHEMERALS 临时节点不能拥有子节点(Ephemeral node
3、s may not have children)ZNODEEXISTS 节点已经存在(The node already exists)ZNOTEMPTY 该节点具有自身的子节点(The node has children)ZSESSIONEXPIRED 会话过期(The session has been expired by the server)ZINVALIDCALLBACK 非法的回调函数(Invalid callback specified)ZINVALIDACL 非法的 ACL(Invalid ACL specified)ZAUTHFAILED 客户端授权失败(Client auth
4、entication failed)ZCLOSING Zookeeper 连接关闭(ZooKeeper is closing)ZNOTHING 并非错误,客户端不需要处理服务器的响应(not error, no server responses to process)ZSESSIONMOVED 会话转移至其他服务器,所以操作被忽略(session moved to another server, so operation is ignored)2、日志级别enum ZooLogLevel ZOO_LOG_LEVEL_ERROR=1,ZOO_LOG_LEVEL_WARN=2,ZOO_LOG_LE
5、VEL_INFO=3,ZOO_LOG_LEVEL_DEBUG=4 3、常量3.1、与 ZNODE 访问权限相关的常量ZOO_PERM_READ; /允许客户端读取znode节点的值以及子节点列表ZOO_PERM_WRITE; /允许客户端设置znode节点的值ZOO_PERM_CREATE; /允许客户端在该znode节点下创建子节点ZOO_PERM_DELETE; /允许客户端删除子节点ZOO_PERM_ADMIN; /允许客户端执行set_acl()ZOO_PERM_ALL; /允许客户端执行所有操作,等价上述所有标识的或3.2、ACL IDs 相关的常量struct Id ZOO_ANY
6、ONE_ID_UNSAFE; /表示所有人(world, anyone)struct Id ZOO_AUTH_IDS; /仅仅用于设置ACLs(auth, )3.3、三种标准的 ACLstruct ACL_vector ZOO_OPEN_ACL_UNSAFE; /全开放权限struct ACL_vector ZOO_READ_ACL_UNSAFE; /所有人可读权限struct ACL_vector ZOO_CREATOR_ALL_ACL; /授予创建者ID所有权限3.4、与 Interest 相关的常量ZOOKEEPER_WRITE, ZOOKEEPER_READ这两个常量用于标识感兴趣的事
7、件并通知 zookeeper 发生了哪些事件。 Interest 常量可以进行组合或(OR)来标识多种兴趣(multiple interests: write, read),这两个常量一般用于 zookeeper_interest() 和 zookeeper_process()两个函数中。3.5、与节点创建相关的常量ZOO_EPHEMERAL, ZOO_SEQUENCEzoo_create 函数标志, ZOO_EPHEMERAL 用来标识创建临时节点,ZOO_SEQUENCE 用来标识节点命名具有递增的后缀序号(一般是节点名称后填充 10 位字符的序号,如 /xyz0000000000, /x
8、yz0000000001, /xyz0000000002, .),同样地,ZOO_EPHEMERAL, ZOO_SEQUENCE 可以组合。3.6、与连接状态 Stat 相关的常量以下常量均与 Zookeeper 连接状态有关,他们通常用作监视器回调函数的参数。ZOOAPI const int ZOO_EXPIRED_SESSION_STATEZOOAPI const int ZOO_AUTH_FAILED_STATEZOOAPI const int ZOO_CONNECTING_STATEZOOAPI const int ZOO_ASSOCIATING_STATEZOOAPI const i
9、nt ZOO_CONNECTED_STATE3.7、与监视类型(Watch Types)相关的常量以下常量标识监视事件的类型,他们通常用作监视器回调函数的第一个参数。ZOO_CREATED_EVENT; /节点被创建(此前该节点不存在),通过 zoo_exists() 设置监视ZOO_DELETED_EVENT; /节点被删除,通过 zoo_exists() 和 zoo_get() 设置监视ZOO_CHANGED_EVENT; /节点发生变化,通过 zoo_exists() 和 zoo_get() 设置监视。ZOO_CHILD_EVENT; /子节点事件,通过 zoo_get_children
10、() 和 zoo_get_children2()设置监视。ZOO_SESSION_EVENT; / 会话丢失ZOO_NOTWATCHING_EVENT; /监视被移除。4、结构体4.1、clientid_ttypedef struct int64_t client_id; /IDchar passwd16; /密码 clientid_t;说明:保存回话 ID 和密码。当回话建立时从服务端接收到,如果需要保持连接,需要回返该结构体4.2、zoo_op_ttypedef struct zoo_op int type;union / CREATEstruct const char *path;con
11、st char *data;int datalen;char *buf;int buflen;const struct ACL_vector *acl;int flags; create_op;/ DELETE struct const char *path;int version; delete_op;/ SETstruct const char *path;const char *data;int datalen;int version;struct Stat *stat; set_op;/ CHECKstruct const char *path;int version; check_o
12、p; zoo_op_t;说明:该结构体包含一次操作相关的所有必须参数,可被zoo_multi()和zoo_amulti()函数调用。它的值可通过zoo_create_op_init(),zoo_delete_op_init(),zoo_set_op_init()和zoo_check_op_init() 函数设置。4.3、zoo_op_result_ttypedef struct zoo_op_result int err;char *value;int valuelen;struct Stat *stat; zoo_op_result_t;说明:保存一次操作的结果信息,被zoo_multi()
13、和zoo_amulti()函数调用。5、函数5.1、zoo_op_t 结构体初始化函数5.1.1 zoo_create_op_initvoid zoo_create_op_init(zoo_op_t *op, const char *path, const char *value,int valuelen, const struct ACL_vector *acl, int flags, char *path_buffer, int path_buffer_len);/*brief 初始化zoo_op_t结构体,用于ZOO_CREATE_OP* paramin/out op: 需要被初始化的结
14、构体指针* paramin path : 节点名,以/与上层目录分割* paramin value: 节点需要存储的数据* paramin valuelen: 需要存储的字节数,无数据时value=NULL,valuelen=-1* paramin acl: 节点的初始权限,不能为空* paramin flags: 普通创建可设为0,或者与创建标识的或操作* paramin/out path_buffer: 存储新节点路径,以NULL结束* paramin path_buffer_len: 新路径缓冲区长度* remark:path_buffer的值可能因ZOO_SEQUENCE标识设置与输入
15、的路径不一致,当path_buffer_len = 0时,该值为NULL。当path_buffer_len 的值小于新节点的实际路径长度,新节点路径将被截断,并以NULL结束。*/5.1.2 zoo_delete_op_initvoid zoo_delete_op_init(zoo_op_t *op, const char *path, int version);/* brief 初始化zoo_op_t结构体,用于ZOO_DELETE_OP* paramin/out op: 需要被初始化的结构体指针* paramin path: 节点名,以/与上层目录分割* paramin version:
16、节点的版本号,-1时进行全匹配(不检测版本)* remark:如果实际版本号与期望版本号不匹配,函数将失败 */5.1.3 zoo_set_op_initvoid zoo_set_op_init(zoo_op_t *op, const char *path, const char *buffer, int buflen, int version, struct Stat *stat);/*brief 初始化zoo_op_t结构体,用于ZOO_SETDATA_OP* paramin/out op: 需要被初始化的结构体指针* paramin path: 节点名,以/与上层目录分割* paramin