Muir Manders cd563b81ec protoCodec: avoid buffer allocations if proto.Marshaler/Unmarshaler (#1689)
* protoCodec: return early if proto.Marshaler

If the object to marshal implements proto.Marshaler, delegate to that
immediately instead of pre-allocating a buffer. (*proto.Buffer).Marshal
has the same logic, so the []byte buffer we pre-allocate in codec.go
would never be used.

This is mainly for users of gogoproto. If you turn on the "marshaler"
and "sizer" gogoproto options, the generated Marshal() method already
pre-allocates a buffer of the appropriate size for marshaling the
entire object.

* protoCodec: return early if proto.Unmarshaler

If the object to unmarshal implements proto.Unmarshaler, delegate to
that immediately. This perhaps saves a bit of work preparing the
cached the proto.Buffer object which would not end up being used for
the proto.Unmarshaler case.

Note that I moved the obj.Reset() call above the delegation to
obj.Unmarshal(). This maintains the grpc behavior of
proto.Unmarshalers always being Reset() before being delegated to,
which is consistent to how proto.Unmarshal() behaves (proto.Buffer
does not call Reset() in Unmarshal).
2017-12-01 15:32:05 -08:00
2017-05-30 20:03:09 -07:00
2017-11-07 10:20:24 -08:00
2017-11-27 11:16:26 -08:00
2017-06-08 14:42:19 +02:00
2017-10-20 12:05:20 -07:00
2017-06-08 14:42:19 +02:00
2017-06-08 14:37:28 +02:00
2017-11-27 11:16:26 -08:00
2017-06-08 14:42:19 +02:00
2017-05-30 20:06:49 -07:00
2017-08-04 13:46:18 -07:00
2017-10-20 12:05:20 -07:00
2017-10-20 12:05:20 -07:00
2017-11-27 11:16:26 -08:00
2017-06-08 14:42:19 +02:00
2017-10-19 09:34:07 -07:00
2017-10-20 12:05:20 -07:00
2017-10-20 12:05:20 -07:00
2017-11-27 11:16:26 -08:00
2017-11-27 11:16:26 -08:00

gRPC-Go

Build Status GoDoc GoReportCard

The Go implementation of gRPC: A high performance, open source, general RPC framework that puts mobile and HTTP/2 first. For more information see the gRPC Quick Start: Go guide.

Installation

To install this package, you need to install Go and setup your Go workspace on your computer. The simplest way to install the library is to run:

$ go get -u google.golang.org/grpc

Prerequisites

This requires Go 1.6 or later. Go 1.7 will be required as of the next gRPC-Go release (1.8).

Constraints

The grpc package should only depend on standard Go packages and a small number of exceptions. If your contribution introduces new dependencies which are NOT in the list, you need a discussion with gRPC-Go authors and consultants.

Documentation

See API documentation for package and API descriptions and find examples in the examples directory.

Performance

See the current benchmarks for some of the languages supported in this dashboard.

Status

General Availability Google Cloud Platform Launch Stages.

FAQ

Compiling error, undefined: grpc.SupportPackageIsVersion

Please update proto package, gRPC package and rebuild the proto files:

  • go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
  • go get -u google.golang.org/grpc
  • protoc --go_out=plugins=grpc:. *.proto
Description
No description provided
Readme 18 MiB
Languages
Go 99.2%
Shell 0.7%