一个c++ 封装的zookeeper库
特点:
1. c++封装,接口简单易用;
2. 文件少,一个头文件和一个源文件,无论是编译成库还是直接源文件编译都很方便;
3. 支持节点的create、set、get;支持watch;
4. 暂时只支持linux。

编译
需要boost头文件,因为使用了boost::function作为回调函数。

linux下:
    cd src
    make -f Makefile.mk
生成libcppzk.a

如何使用

    #include "ZooKeeper.h" // 包含头文件ZooKeeper zk; // 定义对象zk.init("127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"); // 初始化,参数为zookeeper服务器地址列表,格式为:ip:port,ip:port,...zk.exists(path); // 判断节点是否存在zk.createNode(path, data, recursive); // 递归创建节点(recursivce=false时不递归创建,当父节点不存在时直接返回错误 )zk.createEphemeralNode(path, data, recursive); // 递归创建ephemeral节点zk.createSequenceNode(path, data, rpath, recursive); // 递归创建sequence节点, rpath为返回的实际路径// watchzk.watchData(path, dataCallback); // watch节点数据,当数据变化时,触发回调函数zk.watchChildren(path, childrenCallback); // watch子节点,当增加或删除子节点时,触发回调函数// 日志zk.setLogStream(stderr); // 设置日志流zk.setDebugLogLevel(true); // 开启debug日志

watch的callback的定义:

    // 两种callback,数据回调和子节点回调// DataWatchCallback返回路径和该路径的值// ChildrenWatchCallback返回路径和该路径下的子节点名typedef boost::function<void (const std::string &path, const std::string &value)> DataWatchCallback;typedef boost::function<void (const std::string &path, const std::vector<std::string> &value)> ChildrenWatchCallback;

以上代码为清晰起见,省略了错误处理和一些变量的定义,完整代码可参见src/test.cc

下载地址:https://github.com/fdxuwei/cppzk

转载于:https://www.cnblogs.com/fdxuwei/p/5397679.html

c++ 封装的zookeeper库相关推荐

  1. C++将带ui界面的qt工程封装为动态库dll

    C++将带ui界面的qt工程封装为动态库dll 功能如下 完整源代码实现如下 功能如下 将工程封装后可以在别的工程下直接引用该界面,以及该界面的函数, 完整源代码实现如下 #ifndef BUILD_ ...

  2. yue-library是一个基于SpringBoot封装的基础库

    yue-library是一个基于SpringBoot封装的基础库

  3. 开源库MusicPlayManager - 封装StarrySky音乐库

    开源库MusicPlayManager - 封装StarrySky音乐库 关于 效果图 使用 Java版初始化 Kotlin版初始化 java版权限检查工具使用方法: kotlin权限检查工具使用方法 ...

  4. nodejs对连接mysql数据库进行封装,使用库实现对数据库的增删查改操作

    一.先安装mysql中间件 npm i mysql --save 二.config.json配置库文件 {"host": "localhost","p ...

  5. 将自己写的经常复用的类封装成动态库的方法

    C++的开发不像c#那么给力,基本上引用下就可以了,它的步骤比较繁琐. 第一步:制作动态库 利用VC新建工程时选择win32 dynamic-Link Library(空的工程),然后添加头文件和cp ...

  6. linux封装函数,libc库和封装函数 | 求索阁

    Linux系统调用这部分经常出现两个词:libc库和封装函数,不知道你是否清楚它们的含义? libc 1)libc概念 libc是Stantard C Library的简称,它是符合ANSI C标准的 ...

  7. faster_rcnn c++版本的 caffe 封装,动态库(2)

    摘要: 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ github上的代码链接,求给星星:) https:// ...

  8. 完成OSS.Http底层HttpClient重构封装 支持标准库

    OSS.Http项目对于.Net Standard标准库的支持已经迁移完毕,OSS开源系列两个最底层的类库已经具备跨运行时支持的能力.由于OSS.Http类库是几年前我参照RestSharp的思路,完 ...

  9. 99SE元件封装、常用库、分立元件名称

    1.电阻原理图中常用的名称为RES1-RES4:引脚封装形式: AXIAL系列 从AXIAL-0.3到AXIAL-1.0,后缀数字代表两焊盘的间距,单位为Kmil. 2.电容原理图中常用的名称为CAP ...

最新文章

  1. swift轮播图代码
  2. C语言引用不同路径下的头文件的方法
  3. 在FreeBSD上安装Bugzilla
  4. http://www.cnblogs.com/qtqq/p/5271164.html
  5. ListView通过自定义适配器来显示数据并对Item项以及子view项的控件实现监听.
  6. wxWidgets:wxDataViewEvent类用法
  7. Hibernate各种主键生成策略与配置详解
  8. Oracle segment啥意思,关于oracle数据库段segment的小结
  9. java 当中的验证码_Java Web中验证码的实现
  10. CSS魔法堂:小结一下Box Model与Positioning Scheme
  11. 航空公司客户价值分析
  12. VMware安装win7操作系统
  13. python电影数据分析报告_电影数据可视化项目分析报告
  14. [答疑]为什么要把actor翻译成执行者
  15. 为html添加footbar,foobar2000界面组件添加设置方法
  16. go开发环境搭建以及运行一个完整的beego网站项目
  17. 帆软报表获取单元格的值的几种方式,包括分页预览,填报预览,新填报预览
  18. 与基础事务管理器的通信失败 存货申请_图文并茂讲解分布式事务的实现原理...
  19. 关于微信小程序A 与 微信小程序B 之间的跳转问题
  20. 《人人都是架构师+分布式系统架构落地与瓶颈突破》读书笔记

热门文章

  1. ubuntu20.04安装mysql_Ubuntu 20.04安装MySQL 8.0.20记
  2. php文字下划线,css如何设置字体下划线
  3. android系统打印功能实现,Android实现系统打印功能
  4. 彻底理解AMD和CMD
  5. 外服封号_王者荣耀外服玩家被封号十年吐槽无辜,官方复审后,玩家表示轻了...
  6. 学python前要学c吗_目前python熟练 ,想再学golang 需要先学c吗?
  7. mysql安全方面_MySQL数据库在网络安全方面功能有哪些呢?
  8. 计算同比和环比的区别_【数据说第三期】同比和环比数据分析时,有哪些需要注意的点?...
  9. 怎么把php写入文件格式,如何将一个PHP数组有格式的写入文件中
  10. mysql显示nan_Python将dataframe连接到MySQL时出现NaN[mysqlconnector]