一个c++封装的zookeeper库
2016-04-14 16:53
671 查看
cppzk
c++ 封装的zookeeper库
特点:
c++封装,接口简单易用;文件少,一个头文件和一个源文件,无论是编译成库还是直接源文件编译都很方便;
支持节点的create、set、get;支持watch;
暂时只支持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为返回的实际路径 // watch zk.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相关文章推荐
- C/C++重要知识点汇总(持续更新中)
- 基于Leader/Follower模式的C++线程池
- 一些关于VC++开发的笔记
- 转]解析C语言中的sizeof
- C语言memcpy和memmove函数的理解和区别
- C++中map、set、hash_map、hash_set、unordered_map、unordered_set通俗辨析
- [hihoCoder 1149] 回文字符序列
- 搜素算法——二分搜索-1003
- C++/C源码分析
- C++中的虚函数、纯虚函数
- C语言中可变参数的用法
- cpp 并发编程小计
- C语言结构体大小
- C++学会STL
- 删除一个无头单链表的非尾节点(C语言)
- VS2010 C++ 操作Excel表格的编程实现
- C语言中#define的用法(转)
- C++经典面试题之---String类
- 从尾到头打印单链表(C语言)
- 解决eclipse for c/c++的运行错误:Launch Failed Binary not found