一個c++封裝的zookeeper庫
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
相關推薦
一個c++封裝的zookeeper庫
cppzk c++ 封裝的zookeeper庫 特點: c++封裝,介面簡單易用; 檔案少,一個頭檔案和一個原始檔,無論是編譯成庫還是直接原始檔編譯都很方便; 支援節點的create、set、get;支援watch; 暫時只支援linux。
迫不及待推薦一個C++計算幾何庫
怎麼發現的 有事沒事就喜歡找一些感興趣的問題,然後循著問題中的答案或相關的引用到處漫遊,點連結或者偶爾放狗搜一下,然後就找到這個地方了: 謹慎使用: 這個庫應該是不錯的;但是感覺缺乏Eigen那樣嚴格的程式碼的peer review機制和大量而有效的測試
onvif學習筆記7:一個C++封裝的onvif程式碼的閱讀筆記
在前面的文章《onvif學習筆記4:Windows環境使用gsoap生成onvif框架程式碼》、《onvif學習筆記5:onvif框架程式碼初步瞭解》中,我們瞭解瞭如何生成不同的版本的onvif框架程式碼,同時也看到gSOAP生成的C++版本的程式碼無論在程式碼結構還是可
mlpack: 一個C++機器學習庫
簡介 mlpack是一個C++機器學習庫,側重於可擴充套件性、速度和易用性。它的目的是通過一個簡單的、前後一致的API讓新使用
c++ 封裝線程庫 0
read public pri -c class pan lar bool __file__ 1.互斥鎖簡介 互斥鎖主要用於互斥,互斥是一種競爭關系,用來保護臨界資源一次只被一個線程訪問。 POSIX Pthread提供下面函數用來操作互斥鎖。 int pthread_m
c++ 封裝線程庫 1
mes times copy 實現 store oid att ptr amp 1.Pthread條件變量簡介 條件變量也是線程間同步一個重要的內容,如果說互斥是一個種競爭關系,那麽條件變量用於協調線程之間的關系,是一種合作關系。 條件變量的應用很多,例如:Blocking
C++ log4cplus 類庫的封裝
pat get 全局 attach ins 日誌 erro def ring 對 log4cplus 庫的封裝,修改自網路 LogUtils.h /* * LogUtils.h * * Created on: 2018年8月9日 * Author: o
關於怎麽在VS2017中建立一個C/C++函數庫
and 函數 動態鏈接 mic view microsoft 自己 uil lin 想起來自己在大一暑假時做過飛機大戰的小遊戲,於是選擇在VS中創建一個自己的動態鏈接庫(C++),也是為了將加強自己對於數據結構的鞏固。 因為自己也是第一次接觸,於是百度來
日曆---C++封裝一個Date類,Calendar類,實現簡單的日曆+日期計算器程式
C++封裝一個Date類,實現簡單的日曆程式 程式程式碼如下: Date.h #include<iostream> using namespace std; class Date { public: Date(int year = 200
C++載入動態庫的形式來實現封裝
目錄結構 └── test ├── CMakeLists.txt ├── base.h //設定介面 ├── drive.cpp //具體實現 └── main.cpp
關於 C#呼叫一個C/C++dll庫執行時實現多個應用(靜態變數區分) 的解決方法
需求 VS編寫了純C(windows)通訊庫,需要多例項(靜態變數標誌一個例項,達到互相靜態變數不干涉)。 當前問題 dll中使用了全域性static的標
安利個人開發維護的一個C++模板庫(沒有三方依賴, 純標頭檔案) oyoungs/dispatch
專案倉庫地址 C++模板庫oyoungs/dispatch介紹 這是個人開發維護的一個工具性質的純標頭檔案的C++庫 內容包括 dispatch.hpp 同步/非同步排程任務佇列, async
利用C語言標準庫生成一個真隨機數的方法
首先需要明確一點的是,計算機系統中生成一個隨機數,需要依賴一個隨機量,這個隨機量稱為隨機數種子。否則生成的就是偽隨機數。隨機數種子的值越多樣化,生成的數就越隨機。通常,隨機數種子從計算機系統外部引入,例如人的操作、ADC採集到的值等。 C語言
C++封裝成Jni庫的詳細步驟
C++封裝成Jni庫的詳細步驟 第一步:配置java環境 第二步:實現一個類,包含一些簡單操作 第三步:編寫Add.cpp 封裝類Twono中的Add() 第四步:將該Add.cpp生成動態連線庫 第五步:重新編譯 可能出現的一些問題:
C++函式庫的理解:寫一個C++程式庫(排序庫)然後呼叫自己寫的庫(附帶程式)
1.自己寫一個庫:和建工程是一樣的,但是建的專案是DLL檔案,然後再其工程下新增原始檔和標頭檔案,原始檔正常寫,標頭檔案是有要求的,__declspec(dllexport)的加入,程式在下面是給出的,所以往下讀,你會有所得的!!最終得到DLL,LIB,以及.h檔案(.h檔案只是一個路徑,在
C++封裝DLL,匯出一個類
首先:建一個DLL工程,win32專案--DLL--確定; 在標頭檔案中定義要匯出的類: class _declspec(dllexport) CWordSegment { public: CWordSegment();
一個C++解析HTML的庫
HTTP協議使用廣泛,相應的,C++在這塊需求也開始增加。一個好的解析庫可以達到事半功倍的效果,在此貼出我的解析庫的程式碼,方便新手朋友們使用。 hHttpParse.h #ifndef __H_HTML_PARSE_H__ #define __H_HTML_PARSE_
使用C++封裝庫在MDK上建STM32開發工程
用C++進行嵌入式程式開發,甚至是裸系統程式。開發起來比C語言更方便架構搭建與程式管理。 簡單的一個例子使用USART #include "USART.h" USART com(1,11
將標準C++動態連結庫封裝到.NET程式集dll全攻略
/**/ /* ********cppDll.h********* */ #ifdef CPPDLL_EXPORTS #define CPPDLL_API __declspec(dllexport) #else #define CPPDLL_API __declspec(
實現一個C語言版的JSON庫(1)
什麼是JSON JSON(JavaScript Object Notation)是一個用於資料交換的文字格式,它源至於 JavaScript 語言,但它本身只是一種資料格式,可用於任何程式語言。現時具類似功能的格式有 XML等。 一個典型的JSON文字如下: