1. 程式人生 > >一個c++封裝的zookeeper庫

一個c++封裝的zookeeper庫

cppzk

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為返回的實際路徑
// 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文字如下: