本篇文章我们先整体了解一下取消cancellation功能的整体流程。
![在这里插入图片描述](https://img-blog.csdnimg.cn/317c3ec22122408690a1ac67e748e586.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE1ODI5MjI=,size_16,color_FFFFFF,t_70#pic_center)
主要流程说明:
- 当满足业务条件时,客户端一侧主动调用上下文的取消函数cancel(), 上下文监听到后,就会触发客户端流关闭流程
- 从上下文里获取异常信息,获取到的是取消异常信息,如 context canceled
- 将异常信息转换成grpc框架对应的异常信息,如 rpc error: code = Canceled desc = context canceled
- 获取http2对应的取消异常码,CANCEL
- 构建cleanupStream