首页
学习
活动
专区
圈层
工具
发布

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

对应于《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中,目前先了解到这里就可以,后面看到具体使用的地方我们再继续
下一篇
举报
领券