zoukankan      html  css  js  c++  java
  • [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。

  • 相关阅读:
    mongodb
    python中读取文件的read、readline、readlines方法区别
    uva 129 Krypton Factor
    hdu 4734
    hdu 5182 PM2.5
    hdu 5179 beautiful number
    hdu 5178 pairs
    hdu 5176 The Experience of Love
    hdu 5175 Misaki's Kiss again
    hdu 5174 Ferries Wheel
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2864333.html
Copyright © 2011-2022 走看看