网站首页 > 博客文章 正文
对应于《GRPC-C++源码分析(三)--main函数主要流程》中1.5节
for (auto port = ports_.begin(); port != ports_.end(); port++) {
int r = server->AddListeningPort(port->addr, port->creds.get());
if (!r) {
if (added_port) server->Shutdown();
return nullptr;
}
added_port = true;
if (port->selected_port != nullptr) {
*port->selected_port = r;
}
}
可以右键鼠标--在新标签页中打开图片,会更清晰一些
- 大家最关心的bind和listen操作在蓝色框中
- 本节的重点在server_start_listener方法上
下面大概说下上图的流程:
- 通过跟踪,Server的AddListeningPort方法最终调用的是grpc_chttp2_server_add_port方法
- 在grpc_chttp2_server_add_port方法中,grpc_tcp_server_create创建了grpc_tcp_server变量。
//tcp_server.cc
grpc_error* grpc_tcp_server_create(grpc_closure* shutdown_complete,
const grpc_channel_args* args,
grpc_tcp_server** server) {
return grpc_tcp_server_impl->create(shutdown_complete, args, server);
}
//又遇到了熟悉grpc_tcp_server_impl类型,如果还不熟悉的同学,可以参考图中上方区域,说明了grpc_tcp_server_impl的来源
- grpc_tcp_server_add_port方法中创建了socket,并执行了bind和listen操作,将listen描述符封装在了grpc_tcp_listener结构中,并最终赋给了grpc_tcp_server
- grpc_server_add_listener方法将server_start_listener方法放在了grpc_server中,这块会在后面用到
这块的代码没有理解上的难点,基本上按照上图所示就能跟下来
猜你喜欢
- 2024-10-16 Spring Boot集成grpc快速入门demo
- 2024-10-16 如何在 Go 中使用 gRPC?(golang grpc etcd)
- 2024-10-16 gRPC 1.34.0 发布,高性能 RPC 框架
- 2024-10-16 gRPC入坑记(grpc教程 go)
- 2024-10-16 凌鲨(linksaas)的客户端架构(凌肖 鲨鱼)
- 2024-10-16 Python gRPC 入门(grpc python asyncio)
- 2024-10-16 纯干货:微服务开发手册之GRPC(微服务开发入门)
- 2024-10-16 golang中gRPC与gRPC-Gateway的结合使用
- 2024-10-16 gRPC学习记录(一) 概念性知识(grpc特点)
- 2024-10-16 GRPC-C++源码分析(六)--Server-Register
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)