Zookeeper C 回调函数
介绍一下 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 回调函数相关推荐
- Go 学习笔记(16)— 函数(02)[函数签名、有名函数、匿名函数、调用匿名函数、匿名函数赋值给变量、匿名函数做回调函数]
1. 函数签名 函数类型也叫做函数签名,可以使用 fmt.Printf("%T") 格式化参数打印函数类型. package mainimport "fmt"f ...
- OpenCV(六)形态学操作1--基础:膨胀与腐蚀(回调函数)
目录 形态学通用API:morphologyEx 一.基础理论 1.邻接关系 (1)四邻接: (2)D邻接: (3) 八邻接: 2.连通性 (1)四连通: (2)八连通: (3)m连通: 3.形态学基 ...
- 函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...
- 回调函数在C/C++中的使用
回调函数就是一个通过函数指针调用的函数.假如把A函数的指针当作参数传给B函数,然后在B函数中通过A函数传进来的这个指针调用A函数,那么就是回调机制.A函数就是回调函数,而通常情况下,A函数是在系统符合 ...
- 【FFmpeg】自定义回调函数处理AVIOContext中的数据
1.简述 AVIOContext是FFmpeg管理输入输出数据的结构体,它的成员变量有指向数据的指针.大小以及处理数据的回调函数指针等等.如果使用avio_open或avio_open2来创建,它会根 ...
- php 回调递归,PHP数组函数 array_walk_recursive (使用回调函数递归遍历数组元素)
在PHP中,数组函数 array_walk_recursive () 使用回调函数递归遍历数组元素. 函数语法:array_walk_recursive ( array &$array , c ...
- ajax post的回调函数另一个方法,jQueryajax–post()方法 - 米扑博客
jQuery ajax - post() 实例 请求 test.php 网页,忽略返回值: $.post("test.php"); 通过 AJAX POST 请求改变 div 元素 ...
- nodejs回调函数理解
回调实例 问题:想要得到一秒后 计算出的结果 //错误写法function add(x,y) {console.log(1);setTimeout(function () {console.log(2 ...
- dispatch callback ant design pro 网络请求回调函数
index.jsx 代码解析:在组件初次渲染时调用 model 中 命名空间为 a_models 的 getData 网络请求,传了一个patload 参数和 callback 回调函数过去,然后 ...
最新文章
- Play 2.0 用户指南 - 使用JSON库 -- 针对Scala开发者
- maven 主pom 配置不同环境指定不同配置文件以及打包参数
- r语言解释回归模型的假设_模型假设-解释
- 函数的自执行,变量提升和函数提升
- 如何深度理解RNN?——看图就好!
- 分布领域驱动设计(DDD):领域接口化设计式缓存的选择
- CCS实例,网页栏目
- SpringBoot控制层页面指定返回html前端页面
- 什么时候以及为什么基于树的模型可以超过神经网络模型?
- 浅谈分块二元Hermite插值
- C# System.DirectoryServices.DirectoryEntry 域用户验证
- python selenium+firefox对网页截长图
- 【综述】矩阵补全问题
- Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务问题解决
- Simpson积分应用
- ffmpeg实现视频和音频分离,并且将声音切片
- 【软考必读】软考高级证书对工作的6大帮助
- CentOS7.6安装教程
- Linux 命令之 jq
- 不太吸引人的成就系统
热门文章
- java猜数游戏有次数限制_“去小学化”之后,可以这样开展数学游戏,让孩子玩中学,学中乐!...
- linux打包备份到其他机器,linux系统备份恢复到本机或是别的机器上
- 一个家系突变分析一篇 SCI | 文章解析
- 重磅预售 | 分子生物学与遗传学经典名著——《Lewin基因XII》(中译本)
- latex word相互转换
- 一款非常好用的音乐标签及管理工具:Yate for Mac
- 西安后宰门小学_【棒!少年】 追逐热血,挥洒激情!后宰门小学决战2020 MLB First Pitch青少年棒球联赛西安赛区...
- tomcat6的项目能直接在tomcat7上用吗_极尽人性化的设计: 能“隐形”的笔记本电脑支架...
- 2020最新直播源地址下载txt_TXT追书免费小说app安卓版下载-TXT追书免费小说最新版下载v5.0.0...
- 确定性有穷自动机(DFA算法) 非确定性有穷自动机(NFA算法)