How to use predifined protobuf type (i.e. "google/protobuf/timestamp.proto") with gRPC

Adrian picture Adrian · Oct 13, 2016 · Viewed 16.4k times · Source

I'm trying to use google/protobuf/timestamp.proto in with gRPC plugin and Go. This is how I run protoc:

protoc -I  ./   ./*.proto --go_out=plugins=grpc:.

And this is my .proto:

#domain.proto
syntax = "proto3";
option java_multiple_files = true;
option java_package = "com.viant.xyz";
option java_outer_classname = "domain";

import "google/protobuf/timestamp.proto";

message Foo {
    Timestamp modifiedTime = 1;
    ...
}

I'm seeing the following errors:

domain.proto: Import "google/protobuf/timestamp.proto" was not found or had errors.
domain.proto:44:5: "Timestamp" is not defined.

Am I missing something, or this is not yet supported?

Answer

Seonggi Yang picture Seonggi Yang · Oct 21, 2016

Add /usr/local/include to include paths to use /usr/local/include/google/api/timestamp.proto:

protoc -I/usr/local/include -I. --go_out=plugins=grpc:. *.proto

As you can see in timestamp.proto, Timestamp exists in package google.protobuf, so you have to modify to use Timestamp like this:

message Foo {
    google.protobuf.Timestamp modifiedTime = 1;
    ...
}