2016-10-13 2 views
5

Я пытаюсь использовать Google/Protobuf/timestamp.proto в с КПГР плагин и golangКак использовать predifined тип Protobuf (т.е. "Google/Protobuf/timestamp.proto") с КПГР в golang

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

#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; 
    ... 
} 

Я вижу следующие ошибки:

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

Могу ли я что-то отсутствует или это еще не поддерживаются,

ответ

2

Он еще не полностью поддерживается, но вы можете заставить его работать путем изменения

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

и фиксация с генерироваться импорт файла

import google_protobuf "google/protobuf/timestamp.pb" 

в

import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" 
3

Добавить /usr/local/include включать пути использования /usr/local/include/google/api/timestamp.proto:

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

Как вы можете видеть в timestamp.proto, Timestamp существует в пакете google.protobuf, так что вы должны изменить, чтобы использовать Timestamp примерно:

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

Я работаю над проблемой, передав параметр Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp в плагин Go grpc.

Другими словами, я звоню

protoc --go_out=plugins=grpc,Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp:outputdir input.proto 

Это немного рубить. «К счастью», я уже использовал множество параметров Mprotofile=go/pkg/import/path в моей настройке сборки, поэтому его было легко добавить.

Смежные вопросы