栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

grpc-go源码剖析八十七之服务器端一侧,是如何处理元数据的?

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

grpc-go源码剖析八十七之服务器端一侧,是如何处理元数据的?

本篇文章从服务器端角度介绍元数据相关原理。

1、服务器端一侧,是如何接收元数据的?

我们以帧接收器作为入口分析;

进入grpc-go/internal/transport/http2_server.go文件中的HandleStreams方法里:

1.func (t *http2Server) HandleStreams(handle func(*Stream), traceCtx func(context.Context, string) context.Context) {
2.	defer close(t.readerDone)
3.	for {
4.		t.controlBuf.throttle()
5.		frame, err := t.framer.fr.Readframe()
6.		
7.		//---省略不相关代码
8.		switch frame := frame.(type) {
9.		case *http2.metaHeadersframe:
10.			if t.operateHeaders(frame, handle, traceCtx) {
11.				t.Close()
12.				break
13.			}
14.//---省略不相关代码

进入第10行,头帧处理器里:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号