extensions.go 919 B

123456789101112131415161718192021222324252627
  1. package protoext
  2. import (
  3. "github.com/golang/protobuf/proto"
  4. "google.golang.org/protobuf/reflect/protoreflect"
  5. "google.golang.org/protobuf/types/descriptorpb"
  6. )
  7. //go:generate go run github.com/v2fly/v2ray-core/v4/common/errors/errorgen
  8. func GetMessageOptions(msgDesc protoreflect.MessageDescriptor) (*MessageOpt, error) {
  9. msgOpt := msgDesc.Options().(*descriptorpb.MessageOptions)
  10. msgOptRet, err := proto.GetExtension(msgOpt, E_MessageOpt)
  11. if err != nil {
  12. return nil, newError("unable to parse extension from message").Base(err)
  13. }
  14. return msgOptRet.(*MessageOpt), nil
  15. }
  16. func GetFieldOptions(fieldDesc protoreflect.FieldDescriptor) (*FieldOpt, error) {
  17. fieldOpt := fieldDesc.Options().(*descriptorpb.FieldOptions)
  18. msgOptRet, err := proto.GetExtension(fieldOpt, E_FieldOpt)
  19. if err != nil {
  20. return nil, newError("unable to parse extension from message").Base(err)
  21. }
  22. return msgOptRet.(*FieldOpt), nil
  23. }