在前面的文章中我們講了大部分 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 中找到。:-)