Zookeeper C API 指南三(回呼函數)(轉)

來源:互聯網
上載者:User

標籤:let   and   用戶端   comment   com   pos   char   出錯   stat   

 

2013-02-21 12:54 by Haippy, 9237 閱讀, 0 評論, 收藏, 編輯

接上一篇《Zookeeper C API 指南二(監視(Wathes), 基本常量和結構體介紹)》,本文重點介紹 Zookeeper C API 中的各種回呼函數。

Zookeeper C API 中各種回呼函數簡介

在具體介紹 Zookeeper C API 之前,首先介紹一下 Zookeeper C API 中的各種回呼函數的原型:

監視函數(watch function)原型

typedef void (*watcher_fn)(zhandle_t *zh, int type, int state, const char *path,void *watcherCtx);

 監視函數原型的各個參數解釋如下:

zh zookeeper 控制代碼(handle)
type 事件類型(event type). *_EVENT 常量之一.
state 串連狀態(connection state). 狀態值為 *_STATE 常量之一.
path 觸發監視事件的 znode 節點的路徑,若為 NULL,則事件類型為 ZOO_SESSION_EVENT
watcherCtx 監視器上下文(watcher context).

其他回呼函數的原型

Zookeeper 中還有幾種在非同步 API(一般以 zoo_a*開頭的函數) 中使用的回呼函數,根據回呼函數處理非同步函數傳回值類型的不同分為以下幾類:處理返回 void 類型的回呼函數,處理返回 Stat 結構的回呼函數,處理返回字串的回呼函數,處理返回資料的回呼函數,處理返回字串列表(a list of string)的回呼函數,同時處理返回字串列表(a list of string)和 Stat 結構的回呼函數,以及處理返回 ACL 資訊的回呼函數,它們分別如下:

// 處理返回 void 類型的回呼函數typedef void(* void_completion_t)(int rc, const void *data);// 處理返回 Stat 結構的回呼函數typedef void(* stat_completion_t)(int rc, const struct Stat *stat, const void *data); // 處理返回字串的回呼函數typedef void(* string_completion_t)(int rc, const char *value, const void *data); // 處理返回資料的回呼函數typedef void(* data_completion_t)(int rc, const char *value, int value_len, const struct Stat *stat, const void *data); // 處理返回字串列表(a list of string)的回呼函數typedef void(* strings_completion_t)(int rc, const struct String_vector *strings, const void *data); // 同時處理返回字串列表(a list of string)和 Stat 結構的回呼函數typedef void(* strings_stat_completion_t)(int rc, const struct String_vector *strings, const struct Stat *stat, const void *data); // 處理以及返回 ACL 資訊的回呼函數typedef void(* acl_completion_t)(int rc, struct ACL_vector *acl, struct Stat *stat, const void *data);

 下面一一介紹上述幾種回呼函數的用法:

  • 處理返回 void 類型的回呼函數
typedef void(* void_completion_t)(int rc, const void *data)

該回呼函數一般在非同步 API 呼叫結束或 Zookeeper  用戶端失去串連時被調用。

rc 非同步函數調用返回的錯誤碼,串連丟失/逾時將觸發該原型函數(此處指具有該函數原型的回呼函數,下同)的調用,並且錯誤碼為 ZCONNECTIONLOSS --  Zookeeper 用戶端與伺服器端的串連丟失,或者 ZOPERATIONTIMEOUT -- 連線逾時;而與資料相關的事件也會觸發該原型函數的調用,同時置相應的錯誤碼,具體見後文(0 代非同步函數調用成功) 
data 由調用者傳入指標,調用者可以通過該指標向回呼函數傳入自訂的參數,開發人員應負責此指標所指向記憶體的釋放。

 

  • 處理返回 Stat 結構的回呼函數
typedef void(* stat_completion_t)(int rc, const struct Stat *stat, const void *data)

該函數一般在非同步 API 呼叫結束或 Zookeeper  用戶端失去串連時被調用。

rc 非同步函數調用返回的錯誤碼,串連丟失/逾時將觸發該原型函數(此處指具有該函數原型的回呼函數,下同)的調用,並且錯誤碼為 ZCONNECTIONLOSS --  Zookeeper 用戶端與伺服器端的串連丟失,或者 ZOPERATIONTIMEOUT -- 連線逾時;而與資料相關的事件也會觸發該原型函數的調用,同時置相應的錯誤碼,具體見後文(0 代非同步函數調用成功)
stat 指向與該 znode 節點相關的 Stat 資訊,如果返回非 0 值(即非同步呼叫函數出錯),stat 所指向的地區是未定義的,開發人員不負責釋放 stat 所指向的記憶體空間。
data 由調用者傳入指標,調用者可以通過該指標向回呼函數傳入自訂的參數,開發人員應負責此指標所指向記憶體的釋放。

 

  • 處理返回字串的回呼函數
typedef void(* string_completion_t)(int rc, const char *value, const void *data)

該函數一般在非同步 API 呼叫結束或 Zookeeper  用戶端失去串連時被調用。

rc 非同步函數調用返回的錯誤碼,串連丟失/逾時將觸發該原型函數(此處指具有該函數原型的回呼函數,下同)的調用,並且錯誤碼為 ZCONNECTIONLOSS --  Zookeeper 用戶端與伺服器端的串連丟失,或者 ZOPERATIONTIMEOUT -- 連線逾時;而與資料相關的事件也會觸發該原型函數的調用,同時置相應的錯誤碼,具體見後文(0 代非同步函數調用成功)
value 返回的字串
data 由調用者傳入指標,調用者可以通過該指標向回呼函數傳入自訂的參數,開發人員應負責此指標所指向記憶體的釋放。

 

  • 處理返回資料的回呼函數
typedef void(* data_completion_t)(int rc, const char *value, int value_len, const struct Stat *stat, const void *data)

該函數一般在非同步 API 呼叫結束或 Zookeeper  用戶端失去串連時被調用。

rc 非同步函數調用返回的錯誤碼,串連丟失/逾時將觸發該原型函數(此處指具有該函數原型的回呼函數,下同)的調用,並且錯誤碼為 ZCONNECTIONLOSS --  Zookeeper 用戶端與伺服器端的串連丟失,或者 ZOPERATIONTIMEOUT -- 連線逾時;而與資料相關的事件也會觸發該原型函數的調用,同時置相應的錯誤碼,具體見後文(0 代非同步函數調用成功)
value 非同步呼叫的傳回值,如果返回非 0 值(即非同步呼叫函數出錯),value 所指向的地區是未定義的,開發人員不負責釋放 value 所指向的記憶體空間。
value_len 返回 value 資料位元組數(bytes)
stat 指向與該 znode 節點相關的 Stat 資訊,如果返回非 0 值(即非同步呼叫函數出錯),stat 所指向的地區是未定義的,開發人員不負責釋放 stat 所指向的記憶體空間。
data 由調用者傳入指標,調用者可以通過該指標向回呼函數傳入自訂的參數,開發人員應負責此指標所指向記憶體的釋放。

 

  • 處理返回字串列表(a list of string)的回呼函數
typedef void(* strings_completion_t)(int rc, const struct String_vector *strings, const void *data)

該函數一般在非同步 API 呼叫結束或 Zookeeper  用戶端失去串連時被調用。

rc 非同步函數調用返回的錯誤碼,串連丟失/逾時將觸發該原型函數(此處指具有該函數原型的回呼函數,下同)的調用,並且錯誤碼為 ZCONNECTIONLOSS --  Zookeeper 用戶端與伺服器端的串連丟失,或者 ZOPERATIONTIMEOUT -- 連線逾時;而與資料相關的事件也會觸發該原型函數的調用,同時置相應的錯誤碼,具體見後文(0 代非同步函數調用成功)
strings 指向包含了某 znode 節點的所有子節點名稱列表的結構,如果返回非 0 值(即非同步呼叫函數出錯),strings 所指向的地區是未定義的,開發人員不負責釋放 strings 所指向的記憶體空間。
data 由調用者傳入指標,調用者可以通過該指標向回呼函數傳入自訂的參數,開發人員應負責此指標所指向記憶體的釋放。

 

  • 同時處理返回字串列表(a list of string)和 Stat 結構的回呼函數
typedef void(* strings_stat_completion_t)(int rc, const struct String_vector *strings, const struct Stat *stat, const void *data)

該函數一般在非同步 API 呼叫結束或 Zookeeper  用戶端失去串連時被調用。

rc 非同步函數調用返回的錯誤碼,串連丟失/逾時將觸發該原型函數(此處指具有該函數原型的回呼函數,下同)的調用,並且錯誤碼為 ZCONNECTIONLOSS --  Zookeeper 用戶端與伺服器端的串連丟失,或者 ZOPERATIONTIMEOUT -- 連線逾時;而與資料相關的事件也會觸發該原型函數的調用,同時置相應的錯誤碼,具體見後文(0 代非同步函數調用成功)
strings 指向包含了某 znode 節點的所有子節點名稱列表的結構,如果返回非 0 值(即非同步呼叫函數出錯),strings 所指向的地區是未定義的,開發人員不負責釋放 strings 所指向的記憶體空間。
stat 指向與該 znode 節點相關的 Stat 資訊,如果返回非 0 值(即非同步呼叫函數出錯),stat 所指向的地區是未定義的,開發人員不負責釋放 stat 所指向的記憶體空間。
data 由調用者傳入的指標,調用者可以通過該指標向回呼函數傳入自訂的參數,開發人員應負責此指標所指向記憶體的釋放。

 

  • 處理返回 ACL 資訊的回呼函數
typedef void(* acl_completion_t)(int rc, struct ACL_vector *acl, struct Stat *stat, const void *data)

該函數一般在非同步 API 呼叫結束或 Zookeeper  用戶端失去串連時被調用。

rc 非同步函數調用返回的錯誤碼,串連丟失/逾時將觸發該原型函數(此處指具有該函數原型的回呼函數,下同)的調用,並且錯誤碼為 ZCONNECTIONLOSS --  Zookeeper 用戶端與伺服器端的串連丟失,或者 ZOPERATIONTIMEOUT -- 連線逾時;而與資料相關的事件也會觸發該原型函數的調用,同時置相應的錯誤碼,具體見後文(0 代非同步函數調用成功)
acl 指向包含某 znode 節點 ACL 資訊的指標,如果返回非 0 值(即非同步呼叫函數出錯),acl 所指向的地區是未定義的,開發人員不負責釋放 acl 所指向的記憶體空間。
stat 指向與該 znode 節點相關的 Stat 資訊,如果返回非 0 值(即非同步呼叫函數出錯),stat 所指向的地區是未定義的,開發人員不負責釋放 stat 所指向的記憶體空間。
data 由調用者傳入的指標,調用者可以通過該指標向回呼函數傳入自訂的參數,開發人員應負責此指標所指向記憶體的釋放。

 

至此,所有的回呼函數均已介紹完畢,下一節將介紹 Zookeeper C API 分類和基本 API 的使用,見第四講《Zookeeper C API 指南四(C API 概覽)》

Zookeeper C API 指南三(回呼函數)(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.