protoc-gen-go-grpc

command module
v1.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2024 License: Apache-2.0 Imports: 8 Imported by: 107

README

protoc-gen-go-grpc

This tool generates Go language bindings of services in protobuf definition files for gRPC. For usage information, please see our quick start guide.

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.:

  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.

Documentation

Overview

protoc-gen-go-grpc is a plugin for the Google protocol buffer compiler to generate Go code. Install it by building this program and making it accessible within your PATH with the name:

protoc-gen-go-grpc

The 'go-grpc' suffix becomes part of the argument for the protocol compiler, such that it can be invoked as:

protoc --go-grpc_out=. path/to/file.proto

This generates Go service definitions for the protocol buffer defined by file.proto. With that input, the output will be written to:

path/to/file_grpc.pb.go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL