java—从这个.proto文件生成代码后,这个特定函数是如何产生的?

uinbv5nw  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(477)

(我相信这个问题主要是关于协议缓冲区,而不是grpc,但我可能错了。)
有一个 .proto 作为helm项目的一部分存在的文件:https://github.com/kubernetes/helm/blob/v2.5.0/_proto/hapi/rudder/rudder.proto
作为helm构建过程的一部分,在这里生成go绑定(他们签入它,但它是生成的,即不以任何方式手工编辑):https://github.com/kubernetes/helm/blob/v2.5.0/pkg/proto/hapi/rudder/rudder.pb.go
我对这个函数有个问题:https://github.com/kubernetes/helm/blob/v2.5.0/pkg/proto/hapi/rudder/rudder.pb.go#l536
这个函数是如何产生的 .proto 上面提到的文件?
作为背景,我已经做了java等价的(用java生成绑定,而不是go,完全相同) .proto 文件)。你可以看到 pom.xml 如果有问题,在这里执行此操作的部分:https://github.com/microbean/microbean-helm/blob/microbean-helm-2.5.0.0/pom.xml#l290-l310既然我是从相同的源代码生成的,使用基本相同的方法,为什么不生成类似的java方法呢?

kcwpcxri

kcwpcxri1#

快速搜索可在此处找到这些字符串文字:https://github.com/golang/protobuf/blob/master/protoc-gen-go/grpc/grpc.go#l214
“包grpc以go代码输出grpc服务描述。它作为go协议缓冲区编译器插件的插件运行。”
这个代码生成是通过同时使用protoc编译器、protoc的go插件和所述插件的grpc模式来调用的。看到了吗https://github.com/grpc/grpc-go/tree/master/examples.

af7jpaap

af7jpaap2#

grpcjavaapi只是略有不同。而不是打电话:

rudder.RegisterReleaseModuleServiceServer(myGrpcServer, myReleaseModuleService)

在上调用方法 io.grpc.ServerBuilder :

ServerBuilder sb = myGrpcServerBuilder.addService(myReleaseModuleService);

生成的代码实现 BindableService 生成器使用它来配置服务。

相关问题