Zookeeper C API 指南七(Zookeeper 輔助 API 介紹)


在前面的文章中我們講了大部分 Zookeeper  C API,相信大家已經知道怎樣使用 Zookeeper  C API了吧。我曾在《Zookeeper C API 指南》系列文章的第四篇《Zookeeper C API 指南四(C API 概覽)》中也 Zookeeper C API 的分為了 5 類,他們分別是:(1)、初始化、銷毀 Zookeeper 句柄,(2)、與 zoo_multi() 和 zoo_amulti() 批量操作相關的 zoo_op_t 初始化函數,(3)、同步 API,(4)、異步 API,(5)、輔助函數。其中“(1)、初始化、銷毀 Zookeeper 句柄”已經在《Zookeeper C API 指南四(C API 概覽)》中介紹過了,並且在《Zookeeper C API 指南五(同步 API 介紹)》和《Zookeeper C API 指南六(異步 API 介紹)》中我們又分別講了“同步 API” 和 “異步 API”(其中也簡單地介紹了一下與 zoo_multi() 和 zoo_amulti() 批量操作相關的 zoo_op_t 初始化函數),所以接下來我們再來講講 Zookeeper C API 中的 “輔助函數”。

我們分類的 Zookeeper C API 中輔助函數如下:

ZOOAPI void zoo_set_debug_level(ZooLogLevel logLevel);

ZOOAPI void zoo_set_log_stream(FILE * logStream);

ZOOAPI const clientid_t *zoo_client_id(zhandle_t * zh);

ZOOAPI int zoo_recv_timeout(zhandle_t * zh);

ZOOAPI const void *zoo_get_context(zhandle_t * zh);

ZOOAPI void zoo_set_context(zhandle_t * zh, void *context);

ZOOAPI watcher_fn zoo_set_watcher(zhandle_t * zh, watcher_fn newFn);

ZOOAPI struct sockaddr *zookeeper_get_connected_host(zhandle_t * zh, struct sockaddr
                                                     *addr,
                                                     socklen_t * addr_len);

ZOOAPI int zookeeper_interest(zhandle_t * zh, int *fd, int *interest,
                              struct timeval *tv);

ZOOAPI int zookeeper_process(zhandle_t * zh, int events);

ZOOAPI int zoo_state(zhandle_t * zh);

ZOOAPI const char *zerror(int c);

ZOOAPI int is_unrecoverable(zhandle_t * zh);

ZOOAPI void zoo_deterministic_conn_order(int yesOrNo);

下面我們來講講其中比較常用的幾個函數吧 :-)

  •  設置日志等級
ZOOAPI void zoo_set_debug_level(ZooLogLevel logLevel);

其中 logLevel 可以是ZOO_LOG_LEVEL_ERROR, ZOO_LOG_LEVEL_WARN, ZOO_LOG_LEVEL_INFO, ZOO_LOG_LEVEL_DEBUG四個取值。

 

  • 設置日志流
ZOOAPI void zoo_set_log_stream(FILE * logStream);

Zookeeper C API 默認的日志流是標准輸出,可以通過該函數設置 Zookeeper C API的日志流為文件。

 

  • 獲取客戶端的 session id,只有在客戶端的當前連接狀態有效時才可以。
ZOOAPI const clientid_t *zoo_client_id(zhandle_t * zh);

 

  • 返回當前會話的超時時間,只有在客戶端的當前連接狀態有效時才可以。
ZOOAPI int zoo_recv_timeout(zhandle_t * zh);

 

  • 獲取 Zookeeper 句柄的上下文。
ZOOAPI const void *zoo_get_context(zhandle_t * zh);

 

  • 設置 Zookeeper 句柄的上下文。
ZOOAPI void zoo_set_context(zhandle_t * zh, void *context);

 

  • 設置 Zookeeper 句柄的全局監視器回調函數,該函數返回全局監視器的舊回調函數。
ZOOAPI watcher_fn zoo_set_watcher(zhandle_t * zh, watcher_fn newFn);

 

  • 返回當前 Zookeeper 連接的套接字地址。
ZOOAPI struct sockaddr *zookeeper_get_connected_host(zhandle_t * zh, struct sockaddr
                                                     *addr,
                                                     socklen_t * addr_len);

 

  • 獲取當前 Zookeeper 連接狀態。
ZOOAPI int zoo_state(zhandle_t * zh);

 

  • 返回某一錯誤碼的字符串表示。
ZOOAPI const char *zerror(int c);

 

  • 檢查當前 Zookeeper 連接是否為不可恢復的,如果不可恢復,則客戶端需要關閉連接,然后重連。
ZOOAPI int is_unrecoverable(zhandle_t * zh);

 

好了,Zookeeper 大部分的輔助函數就介紹到這里了,大家可以更多文檔可以在 zookeeper.h 中找到。:-)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM