GreeterClient
GreeterClient greeter(grpc::CreateChannel(target_str, grpc::InsecureChannelCredentials()));
target_str :目标 ip 和 端口 target_str = "localhost:50051";
grpc::InsecureChannelCredentials:
GrpcLibraryCodegen 需要 grpc 服务的都需要继承这个类,构造函数里对静态的 grpcLibrary 对象 init -> grpc_init
GrpcLibraryCodegen(bool call_grpc_init = true) : grpc_init_called_(false) {
if (call_grpc_init) {
GPR_CODEGEN_ASSERT(g_glip &&
"gRPC library not initialized. See "
"grpc::internal::GrpcLibraryInitializer.");
g_glip->init();
grpc_init_called_ = true;
}
}
ChannelCredentials 封装了服务器给客户端的channel 需要的验证和状态,可以对 client 在 channel 上的调用进行身份验证、断言
构造函数会调用 g_gli_initializer.summon() ,构造 GrpcLibrary 实例 ,因为 g_gli_initializer 是静态的,先于 ChannelCredentials 对象构造,grpc::g_glip 是最先生成的
GrpcLibraryInitializer() {
if (grpc::g_glip == nullptr) {
static auto* const g_gli = new GrpcLibrary();
grpc::g_glip = g_gli;
}
sayHello调用流程:
后面的暂时没耐心看啦 哈哈哈哈