Some checks failed
codecov / upload (push) Failing after 13m59s
CodeQL / Analyze (push) Failing after 1s
Testing / vet-proto (push) Failing after 1s
Testing / tests (arm, latest) (push) Waiting to run
Testing / extras (latest) (push) Failing after 1s
Testing / static checks (latest-1) (push) Failing after 1s
Testing / tests (-race, latest) (push) Failing after 1s
Testing / tests (i386, latest) (push) Failing after 1s
Testing / tests (latest) (push) Failing after 1s
Testing / tests (latest-1) (push) Failing after 1s
Lock Threads / lock (push) Failing after 1s
govulncheck / govulncheck (.) (push) Failing after 1s
govulncheck / govulncheck (./cmd/protoc-gen-go-grpc) (push) Failing after 1s
govulncheck / govulncheck (./gcp/observability) (push) Failing after 1s
govulncheck / govulncheck (./security/advancedtls) (push) Failing after 1s
govulncheck / govulncheck (./stats/opencensus) (push) Failing after 1s
Stale bot / stale (push) Failing after 1s
29 lines
1.3 KiB
Markdown
29 lines
1.3 KiB
Markdown
# protoc-gen-go-grpc
|
|
|
|
This tool generates Go language bindings of `service`s in protobuf definition
|
|
files for gRPC. For usage information, please see our [quick start
|
|
guide](https://grpc.io/docs/languages/go/quickstart/).
|
|
|
|
## Future-proofing services
|
|
|
|
By default, to register services using the methods generated by this tool, the
|
|
service implementations must embed the corresponding
|
|
`Unimplemented<ServiceName>Server` for future compatibility. This is a behavior
|
|
change from the grpc code generator previously included with `protoc-gen-go`.
|
|
To restore this behavior, set the option `require_unimplemented_servers=false`.
|
|
E.g.:
|
|
|
|
```sh
|
|
protoc --go-grpc_out=. --go-grpc_opt=require_unimplemented_servers=false[,other options...] \
|
|
```
|
|
|
|
Note that this is not recommended, and the option is only provided to restore
|
|
backward compatibility with previously-generated code.
|
|
|
|
When embedding the `Unimplemented<ServiceName>Server` in a struct that
|
|
implements the service, it should be embedded by _value_ instead of as a
|
|
_pointer_. If it is embedded as a pointer, it must be assigned to a valid,
|
|
non-nil pointer or else unimplemented methods would panic when called. This is
|
|
tested at service registration time, and will lead to a panic in
|
|
`Register<ServiceName>Server` if it is not embedded properly.
|