网站首页 > 博客文章 正文
1 server
对应《GRPC-C++源码分析(二)--main函数主要流程》中的1.2节 创建Server
std::unique_ptr<Server> server(new Server(
max_receive_message_size_, &args, sync_server_cqs,
sync_server_settings_.min_pollers, sync_server_settings_.max_pollers,
sync_server_settings_.cq_timeout_msec, resource_quota_,
std::move(interceptor_creators_)));
- sync_server_cqs作为参数传到了Server构造函数中,赋给了sync_server_cqs_
在Server的构造函数中填充了sync_req_mgrs_
for (const auto& it : *sync_server_cqs_) {
sync_req_mgrs_.emplace_back(new SyncRequestThreadManager(
this, it.get(), global_callbacks_, server_rq, min_pollers,
max_pollers, sync_cq_timeout_msec));
}
- 注意sync_server_cqs_作为参数传到了SyncRequestThreadManager构造函数中,赋给了server_cq_,这个server_cq_会在后面用到
在Server的构造函数中生成了grpc_server* server_;
server_ = grpc_server_create(&channel_args, nullptr);
- 这里的server_会在稍后的grpc_server_register_completion_queue方法中用到
2 Register
对应于《GRPC-C++源码分析(三)--main函数主要流程》中1.3节和1.4节
2.1 grpc_server_register_completion_queue
for (auto it = sync_server_cqs->begin(); it != sync_server_cqs->end(); ++it) {
grpc_server_register_completion_queue(server->server_, (*it)->cq(),
nullptr);
has_frequently_polled_cqs = true;
}
- 将sync_server_cqs中每个ServerCompletionQueue类中的cq_指针放到Server中的grpc_completion_queue** cqs指针数组中
2.2 RegisterService
for (auto service = services_.begin(); service != services_.end();
service++) {
if (!server->RegisterService((*service)->host.get(), (*service)->service)) {
return nullptr;
}
}
- 注册service得从/grpc/examples/cpp/helloworld/greeter_server.cc说起
- 这块逻辑关注的是methods_里的东西来自什么地方
- 在greeter_server.cc文件中声明GreeterServiceImpl service时,便调用了其父类Greeter::Service的构造方法,利用AddMethod方法将具体的method放到了methods_中
- 在Server调用RegisterService时,会把这些method放到sync_req_mgrs_里的每一个SyncRequestThreadManager中,目前先了解到这里就可以,后面看到具体使用的地方我们再继续
猜你喜欢
- 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:Google自研的rpc框架(grpc go-micro)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)