Как использовать EnumValueOptions в protobuf - PullRequest
1 голос
/ 18 мая 2019

Я пытаюсь использовать функцию пользовательских опций в protobuf.Я не уверен, неправильно ли я создаю пользовательский параметр или пытаюсь получить его неверно.

Вот мое прототипное определение:

syntax = "proto3";

import "google/protobuf/descriptor.proto";

package common;

message Foo {
    EventType event_type = 1;
}

enum AuditEventType {
    AuditEventDefault = 0;
    AuditEventError = 1;
    AuditEventInfo = 2;
}

enum EventType { 
    Undefined = 0;
    AuditSourceType.Pearl)]
    Lead = 1 [(audit_event_type) = AuditEventInfo];
}

extend google.protobuf.EnumValueOptions {
    AuditEventType audit_event_type = 50000;
} 

Так что в моемкод, как бы я получить audit_event_type из поля event_type на Foo?

Я вижу такие примеры:

func TestExtension(t *testing.T) {
    foo := &Foo{
        EventType: EventType_Lead,
    }

    _, md := descriptor.ForMessage(foo)

    auditEvent, err := proto.GetExtension(md.Options, E_AuditEventType)
    if err != nil {
        t.Error("error:", err)
    }
    t.Log(auditEvent)
}

Но я получаю ошибку:

error: proto: nil *descriptor.MessageOptions is not extendable
...