前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GRPC-C++源码分析(十)--Register

GRPC-C++源码分析(十)--Register

原创
作者头像
路小饭
修改2019-04-23 11:27:57
1.3K0
修改2019-04-23 11:27:57
举报
文章被收录于专栏:C++开源框架源码分析

对应于《GRPC-C++源码分析(三)--main线程》中1.3节和1.4节

1 grpc_server_register_completion_queue

代码语言:javascript
复制
  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 RegisterService

代码语言:javascript
复制
  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中,目前先了解到这里就可以,后面看到具体使用的地方我们再继续

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 grpc_server_register_completion_queue
  • 2 RegisterService
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档