c++ 封装的zookeeper库
一个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库相关推荐
- C++将带ui界面的qt工程封装为动态库dll
C++将带ui界面的qt工程封装为动态库dll 功能如下 完整源代码实现如下 功能如下 将工程封装后可以在别的工程下直接引用该界面,以及该界面的函数, 完整源代码实现如下 #ifndef BUILD_ ...
- yue-library是一个基于SpringBoot封装的基础库
yue-library是一个基于SpringBoot封装的基础库
- 开源库MusicPlayManager - 封装StarrySky音乐库
开源库MusicPlayManager - 封装StarrySky音乐库 关于 效果图 使用 Java版初始化 Kotlin版初始化 java版权限检查工具使用方法: kotlin权限检查工具使用方法 ...
- nodejs对连接mysql数据库进行封装,使用库实现对数据库的增删查改操作
一.先安装mysql中间件 npm i mysql --save 二.config.json配置库文件 {"host": "localhost","p ...
- 将自己写的经常复用的类封装成动态库的方法
C++的开发不像c#那么给力,基本上引用下就可以了,它的步骤比较繁琐. 第一步:制作动态库 利用VC新建工程时选择win32 dynamic-Link Library(空的工程),然后添加头文件和cp ...
- linux封装函数,libc库和封装函数 | 求索阁
Linux系统调用这部分经常出现两个词:libc库和封装函数,不知道你是否清楚它们的含义? libc 1)libc概念 libc是Stantard C Library的简称,它是符合ANSI C标准的 ...
- faster_rcnn c++版本的 caffe 封装,动态库(2)
摘要: 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ github上的代码链接,求给星星:) https:// ...
- 完成OSS.Http底层HttpClient重构封装 支持标准库
OSS.Http项目对于.Net Standard标准库的支持已经迁移完毕,OSS开源系列两个最底层的类库已经具备跨运行时支持的能力.由于OSS.Http类库是几年前我参照RestSharp的思路,完 ...
- 99SE元件封装、常用库、分立元件名称
1.电阻原理图中常用的名称为RES1-RES4:引脚封装形式: AXIAL系列 从AXIAL-0.3到AXIAL-1.0,后缀数字代表两焊盘的间距,单位为Kmil. 2.电容原理图中常用的名称为CAP ...
最新文章
- swift轮播图代码
- C语言引用不同路径下的头文件的方法
- 在FreeBSD上安装Bugzilla
- http://www.cnblogs.com/qtqq/p/5271164.html
- ListView通过自定义适配器来显示数据并对Item项以及子view项的控件实现监听.
- wxWidgets:wxDataViewEvent类用法
- Hibernate各种主键生成策略与配置详解
- Oracle segment啥意思,关于oracle数据库段segment的小结
- java 当中的验证码_Java Web中验证码的实现
- CSS魔法堂:小结一下Box Model与Positioning Scheme
- 航空公司客户价值分析
- VMware安装win7操作系统
- python电影数据分析报告_电影数据可视化项目分析报告
- [答疑]为什么要把actor翻译成执行者
- 为html添加footbar,foobar2000界面组件添加设置方法
- go开发环境搭建以及运行一个完整的beego网站项目
- 帆软报表获取单元格的值的几种方式,包括分页预览,填报预览,新填报预览
- 与基础事务管理器的通信失败 存货申请_图文并茂讲解分布式事务的实现原理...
- 关于微信小程序A 与 微信小程序B 之间的跳转问题
- 《人人都是架构师+分布式系统架构落地与瓶颈突破》读书笔记
热门文章
- ubuntu20.04安装mysql_Ubuntu 20.04安装MySQL 8.0.20记
- php文字下划线,css如何设置字体下划线
- android系统打印功能实现,Android实现系统打印功能
- 彻底理解AMD和CMD
- 外服封号_王者荣耀外服玩家被封号十年吐槽无辜,官方复审后,玩家表示轻了...
- 学python前要学c吗_目前python熟练 ,想再学golang 需要先学c吗?
- mysql安全方面_MySQL数据库在网络安全方面功能有哪些呢?
- 计算同比和环比的区别_【数据说第三期】同比和环比数据分析时,有哪些需要注意的点?...
- 怎么把php写入文件格式,如何将一个PHP数组有格式的写入文件中
- mysql显示nan_Python将dataframe连接到MySQL时出现NaN[mysqlconnector]