監視回調函數
原型:
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 類型的回調函數
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類型的回調函數
一般在異步API調用結束或zookeeper用戶端失去連接配接時被調用,原型如下:
typedef void(* void_completion_t)(int rc, const void *data);
參數說明如下:
rc:異步函數調用傳回的錯誤碼。連接配接丢失/逾時将觸發該回調函數,并且錯誤碼為ZCONNECTIONLOSS(zookeeper用戶端與伺服器端的連接配接丢失)或者ZOPERATIONTIMEOUT(連接配接逾時);而與資料相關的事件也會觸發該回調函數,同時置相應的錯誤碼。
data:由調用者傳入的指針,調用者可以通過該指針向回調函數傳入自定義的參數。開發人員需要負責此指針所指向記憶體的釋放。
處理傳回Stat結構的回調函數
一般在異步API調用結束或zookeeper用戶端失去連接配接時被調用,原型如下:
typedef void(* stat_completion_t)(int rc, const struct Stat *stat, const void *data);
參數說明:
rc:異步函數調用傳回的錯誤碼。連接配接丢失/逾時将觸發該回調函數,并且錯誤碼為ZCONNECTIONLOSS(zookeeper用戶端與伺服器端的連接配接丢失)或者ZOPERATIONTIMEOUT(連接配接逾時);而與資料相關的事件也會觸發該回調函數,同時置相應的錯誤碼。
stat:指向與該znode節點相關的Stat資訊。如果傳回非0值(異步調用函數出錯),stat所指向的區域是未定義的,開發者不負責釋放stat所指向的記憶體空間。
data:由調用者傳入的指針,調用者可以通過該指針向回調函數傳入自定義的參數。開發人員需要負責此指針所指向記憶體的釋放。
處理傳回字元串的回調函數
一般在異步API調用結束或zookeeper用戶端失去連接配接時被調用,原型如下:
typedef void(* string_completion_t)(int rc, const char *value, const void *data)
參數說明:
rc:異步函數調用傳回的錯誤碼。連接配接丢失/逾時将觸發該回調函數,并且錯誤碼為ZCONNECTIONLOSS(zookeeper用戶端與伺服器端的連接配接丢失)或者ZOPERATIONTIMEOUT(連接配接逾時);而與資料相關的事件也會觸發該回調函數,同時置相應的錯誤碼。
value:傳回的字元串
data:由調用者傳入的指針,調用者可以通過該指針向回調函數傳入自定義的參數。開發人員需要負責此指針所指向記憶體的釋放。
處理傳回資料的回調函數
一般在異步API調用結束或zookeeper用戶端失去連接配接時被調用,原型如下:
typedef void(* data_completion_t)(int rc, const char *value, int value_len, const struct Stat *stat, const void *data);
參數說明:
rc:異步函數調用傳回的錯誤碼。連接配接丢失/逾時将觸發該回調函數,并且錯誤碼為ZCONNECTIONLOSS(zookeeper用戶端與伺服器端的連接配接丢失)或者ZOPERATIONTIMEOUT(連接配接逾時);而與資料相關的事件也會觸發該回調函數,同時置相應的錯誤碼。
value:異步調用的傳回值。如果傳回非0,則value所指向的區域是未定義的,開發者不用釋放value所指向的記憶體空間。
value_len:傳回value資料位元組數(bytes)
stat:指向該znode節點相關的Stat資訊。如果傳回非0值(異步調用函數出錯),stat所指向的區域是未定義的,開發者不負責釋放stat所指向的記憶體空間。
data:由調用者傳入的指針,調用者可以通過該指針向回調函數傳入自定義的參數。開發人員需要負責此指針所指向記憶體的釋放。
處理傳回字元串清單的回調函數
一般在異步API調用結束或zookeeper用戶端失去連接配接時被調用,原型如下:
typedef void(* strings_completion_t)(int rc, const struct String_vector *strings, const void *data);
參數說明:
rc:異步函數調用傳回的錯誤碼。連接配接丢失/逾時将觸發該回調函數,并且錯誤碼為ZCONNECTIONLOSS(zookeeper用戶端與伺服器端的連接配接丢失)或者ZOPERATIONTIMEOUT(連接配接逾時);而與資料相關的事件也會觸發該回調函數,同時置相應的錯誤碼。
strings:指向包含了某znode節點的所有子節點名稱清單的結構。如果傳回非0值,strings所指向的區域是未定義的,開發者不負責釋放strings所指向的記憶體空間。
data:由調用者傳入的指針,調用者可以通過該指針向回調函數傳入自定義的參數。開發人員需要負責此指針所指向記憶體的釋放。
處理傳回字元串清單和Stat結構的回調函數
一般在異步API調用結束或zookeeper用戶端失去連接配接時被調用,原型如下:
typedef void(* strings_stat_completion_t)(int rc, const struct String_vector *strings, const struct Stat *stat, const void *data);
參數說明:
rc:異步函數調用傳回的錯誤碼。連接配接丢失/逾時将觸發該回調函數,并且錯誤碼為ZCONNECTIONLOSS(zookeeper用戶端與伺服器端的連接配接丢失)或者ZOPERATIONTIMEOUT(連接配接逾時);而與資料相關的事件也會觸發該回調函數,同時置相應的錯誤碼。
strings:指向包含了某znode節點的所有子節點名稱清單的結構。如果傳回非0值,strings所指向的區域是未定義的,開發者不負責釋放strings所指向的記憶體空間。
stat:指向該znode節點相關的Stat資訊。如果傳回非0值(異步調用函數出錯),stat所指向的區域是未定義的,開發者不負責釋放stat所指向的記憶體空間。
data:由調用者傳入的指針,調用者可以通過該指針向回調函數傳入自定義的參數,開發人員需要負責此指針所指向記憶體的釋放。
處理傳回ACL資訊的回調函數
一般在異步API調用結束或zookeeper用戶端失去連接配接時被調用,原型如下:
typedef void(* acl_completion_t)(int rc, struct ACL_vector *acl, struct Stat *stat, const void *data);
參數說明:
rc:異步函數調用傳回的錯誤碼。連接配接丢失/逾時将觸發該回調函數,并且錯誤碼為ZCONNECTIONLOSS(zookeeper用戶端與伺服器端的連接配接丢失)或者ZOPERATIONTIMEOUT(連接配接逾時);而與資料相關的事件也會觸發該回調函數,同時置相應的錯誤碼。
acl:指向包含某znode節點ACL資訊的指針。如果傳回非0值(異步調用函數出錯),acl所指向的區域是未定義的,開發者不負責釋放acl所指向的記憶體空間。
stat:指向該znode節點相關的Stat資訊。如果傳回非0值(異步調用函數出錯),stat所指向的區域是未定義的,開發者不負責釋放stat所指向的記憶體空間。
data:由調用者傳入的指針,調用者可以通過該指針向回調函數傳入自定義的參數,開發人員需要負責此指針所指向記憶體的釋放。