• [zz]zookeeper C api


    转载自:http://blog.csdn.net/poechant/article/details/6675431

    参考:

    Java端的API:http://zookeeper.apache.org/doc/r3.3.4/api/index.html

    另外,zookeeper源码中的cli_mt源码提供了很好的例子,最后有问题必须参照这个文件。

    1. zookeeper初始化

    1. zhandle_t *zookeeper_init(const char *host, watcher_fn fn,  
    2. int recv_timeout, const clientid_t *clientid, void *context, int flags);  

    功能:

    创建一个句柄(handle)和一个响应(response)这个句柄的会话(session)。

    参数:

    host:zookeeper主机列表,用逗号间隔。

    fn:用于监视的回调函数。

    clientid:之前建立过连接,现在要重新连的客户端(client)ID。如果之前没有,则为0.

    context:暂时用不到,忽略。(TODO)

    flags:设置为0,zookeeper开发团队保留以后使用。


    2. 监视节点是否存在

    1. int zoo_exists(zhandle_t *zh, const char *path, int watch,  
    2. struct Stat *stat);  

    功能:

    同步监视一个zookeeper节点(node)是否存在。

    参数:

    zh:zookeeper的句柄,由zookeeper_init得到。

    path:节点名称,就是一个类似于文件系统写法的路径。

    watch:设置为0,则无作用。设置为非0时,暂时用不到,忽略。(TODO)

    stat:(TODO)

    返回 值:ZOK,ZNONODE,ZNOAUTH,ZBADARGUMENTS,ZINVALIDSTATE,ZMARSHALLINGERROR。ZOK表 示操作成功,ZNONODE表示该节点不存在,ZNOAUTH表示客户端(client)无权限,ZINVALIDSTATE表示存在非法的参数,后两者 暂略(TODO)。


    3. 新建zookeeper节点

    1. int zoo_create(zhandle_t *zh, const char *path, const char *value, int valuelen,  
    2. const struct ACL_vector *acl, int flags, char *path_buffer, int path_buffer_len);  

    功能:

    创建一个同步的zookeeper节点。

    参数:

    zh:zookeeper的句柄,由zookeeper_init得到。

    path:节点名称,就是一个类似于文件系统写法的路径。

    value:欲存储到该节点的数据。如果不存储数据,则设置为NULL。

    valuelen:欲存储的数据的长度。如果不存储数据,则设置为-1.

    acl:初始的ACL节点,ACL不能为空。比如设置为&ZOO_OPEN_ACL_UNSAFE。(TODO)

    flags:一般设置为0.(TODO)

    path_buffer:将由新节点填充的路径值。可设置为NULL。(TODO)

    path_buffer_len:path_buffer的长度。

    返回 值:ZOK,ZNONODE,ZNODEEXISTS,ZNOAUTH,ZNOCHILDRENFOREPHEMERALS,ZBADARGUMENTS,ZINVALIDSTATE,ZMARSHALLINGERROR。 ZOK表示操作成功,ZNONODE表示该节点不存在,ZNODEEXISTS表示节点已经存在,ZNOAUTH表示客户端(client)无权 限,ZNOCHILDRENFOREPHEMERALS表示不能够创建临时(ephemeral)节点的子节点 (children),ZINVALIDSTATE表示存在非法的参数,后两者暂略(TODO)。


    4. 设置zookeeper节点

    1. int zoo_set(zhandle_t *zh, const char *path, const char *buffer,  
    2. int buflen, int version);  

    功能:

    向zookeeper节点写数据。

    参数:

    zh:zookeeper的句柄,由zookeeper_init得到。

    path:节点名称,就是一个类似于文件系统写法的路径。

    buffer:欲写的数据。

    buflen:欲写的数据的长度。

    version:检查这个节点的版本是否为version。当设置为-1时,不会进行版本检查。(TODO)


    5. 获取某节点的子节点

    1. int zoo_wget_children(zhandle_t *zh, const char *path, watcher_fn watcher,  
    2. void* watcherCtx, struct String_vector *strings);  

    功能:

    同步列出一个节点的所有子节点。

    参数:

    zh:zookeeper的句柄,由zookeeper_init得到。

    path:节点名称,就是一个类似于文件系统写法的路径。

    watcher:若设置为非0,则zookeeper服务器(server)会设置一个监视器,用来在节点发生改变时通知客户端(client)。

    watcherCtx:传送给watcher作为回调的具体用户数据(user specific data)。

    strings:用来保存得到的子节点路径。

    返回值:ZOK,ZNONODE,ZNOAUTH,ZBADARGUMENTS,ZINVALIDSTATE,ZMARSHALLINGERROR。

  • 相关阅读:
    python https请求报错:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]
    python打包为exe文件
    文件自定义扫描工具
    pandas 的常用方法
    cisco应用
    Cisco 模拟配置
    python 识别图片上的数字
    OpenSSL
    OpenSSL
    OpenSSL
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2864333.html
Copyright © 2020-2023  润新知