2017-07-14 30 views
0

(我相信這個問題主要是關於協議的緩衝區,而不是GRPC,但我可能是錯的。)這個特殊的函數是如何從這個.proto文件生成代碼的結果?

有一個.proto文件存在的頭盔項目的一部分:https://github.com/kubernetes/helm/blob/v2.5.0/_proto/hapi/rudder/rudder.proto

由於頭盔的構建過程的一部分,一個圍棋綁定這裏生成(他們檢查它,但它產生的,即不以任何方式手工編輯):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的等價物(generated bindings in Java而不是Go,關閉了相同的.proto文件)。你可以看到pom.xml這一節,它在這裏如果很重要:https://github.com/microbean/microbean-helm/blob/microbean-helm-2.5.0.0/pom.xml#L290-L310爲什麼不生成類似的Java方法,因爲我使用基本相同的配方生成相同的源代碼?

+0

爲什麼,而不是在你的問題中包含代碼,你是否發佈github鏈接(這可能會改變到讓其他人無用的問題)? –

+0

@JoeC如果他們是樹的鏈接,是的。但是blob鏈接被有效地鎖定,除非有人去,並且從字面上沒有釋放kubernetes的版本,這給出了kubernetes的基礎設施有多少,沒有發生。 –

+0

嗨,@JoeC,感謝您的評論。我直接鏈接到發佈標籤。由於我不清楚哪些部分可能是相關的,所以這裏的代碼很長,我不想在這裏包含幾百行輸出。無論如何,我希望你會考慮這個問題。 –

回答

1

gRPC Java API只是略有不同。而不是調用的:

rudder.RegisterReleaseModuleServiceServer(myGrpcServer, myReleaseModuleService) 

io.grpc.ServerBuilder調用一個方法:

ServerBuilder sb = myGrpcServerBuilder.addService(myReleaseModuleService); 

它使用的生成器爲服務配置服務生成的代碼implements BindableService

+0

Eric,謝謝;好解釋的。 –

0

快速搜索查找這些字符串文字在這裏:https://github.com/golang/protobuf/blob/master/protoc-gen-go/grpc/grpc.go#L214

「包GRPC輸出GRPC服務描述在Go代碼 它運行作爲圍棋協議緩衝編譯器插件的插件。」

通過使用protoc編譯器,Protoc的Go插件和所述插件的gRPC模式來調用此代碼生成。見https://github.com/grpc/grpc-go/tree/master/examples

+0

嗨,謝謝你的回答。是的,我使用gRPC for Java,遵循完全類似的配方。爲了用這些術語來解釋這個問題,我想我會問一個關於gRPC for Java的問題? –

相關問題