2018-11-28 18:25:20 -08:00
|
|
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
2019-02-13 14:13:21 -08:00
|
|
|
// source: encoding/testprotos/pb2/test.proto
|
2018-11-28 18:25:20 -08:00
|
|
|
|
|
|
|
package pb2
|
|
|
|
|
|
|
|
import (
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
bytes "bytes"
|
|
|
|
gzip "compress/gzip"
|
2018-11-28 18:25:20 -08:00
|
|
|
proto "github.com/golang/protobuf/proto"
|
|
|
|
any "github.com/golang/protobuf/ptypes/any"
|
|
|
|
duration "github.com/golang/protobuf/ptypes/duration"
|
|
|
|
empty "github.com/golang/protobuf/ptypes/empty"
|
|
|
|
_struct "github.com/golang/protobuf/ptypes/struct"
|
|
|
|
timestamp "github.com/golang/protobuf/ptypes/timestamp"
|
|
|
|
wrappers "github.com/golang/protobuf/ptypes/wrappers"
|
2018-12-13 14:19:50 -08:00
|
|
|
protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
|
|
|
|
protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
reflect "reflect"
|
2018-11-28 18:25:20 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
// This is a compile-time assertion to ensure that this generated file
|
|
|
|
// is compatible with the proto package it is being compiled against.
|
|
|
|
// A compilation error at this line likely means your copy of the
|
|
|
|
// proto package needs to be updated.
|
2018-12-13 14:19:50 -08:00
|
|
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
2018-11-28 18:25:20 -08:00
|
|
|
|
|
|
|
type Enum int32
|
|
|
|
|
|
|
|
const (
|
2019-02-13 14:13:21 -08:00
|
|
|
Enum_ONE Enum = 1
|
|
|
|
Enum_TWO Enum = 2
|
|
|
|
Enum_TEN Enum = 10
|
2018-11-28 18:25:20 -08:00
|
|
|
)
|
|
|
|
|
2019-01-08 16:18:07 -08:00
|
|
|
func (e Enum) Type() protoreflect.EnumType {
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
return xxx_Test_protoFile_enumTypes[0]
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2019-01-08 16:18:07 -08:00
|
|
|
func (e Enum) Number() protoreflect.EnumNumber {
|
2018-12-13 14:19:50 -08:00
|
|
|
return protoreflect.EnumNumber(e)
|
|
|
|
}
|
|
|
|
|
2018-11-28 18:25:20 -08:00
|
|
|
var Enum_name = map[int32]string{
|
2019-02-13 14:13:21 -08:00
|
|
|
1: "ONE",
|
|
|
|
2: "TWO",
|
|
|
|
10: "TEN",
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var Enum_value = map[string]int32{
|
2019-02-13 14:13:21 -08:00
|
|
|
"ONE": 1,
|
|
|
|
"TWO": 2,
|
|
|
|
"TEN": 10,
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (x Enum) Enum() *Enum {
|
|
|
|
p := new(Enum)
|
|
|
|
*p = x
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (x Enum) String() string {
|
|
|
|
return proto.EnumName(Enum_name, int32(x))
|
|
|
|
}
|
|
|
|
|
|
|
|
func (x *Enum) UnmarshalJSON(data []byte) error {
|
|
|
|
value, err := proto.UnmarshalJSONEnum(Enum_value, data, "Enum")
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
*x = Enum(value)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (Enum) EnumDescriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{0}
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
type Enums_NestedEnum int32
|
|
|
|
|
|
|
|
const (
|
|
|
|
Enums_UNO Enums_NestedEnum = 1
|
|
|
|
Enums_DOS Enums_NestedEnum = 2
|
|
|
|
Enums_DIEZ Enums_NestedEnum = 10
|
|
|
|
)
|
|
|
|
|
2019-01-08 16:18:07 -08:00
|
|
|
func (e Enums_NestedEnum) Type() protoreflect.EnumType {
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
return xxx_Test_protoFile_enumTypes[1]
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2019-01-08 16:18:07 -08:00
|
|
|
func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
|
2018-12-13 14:19:50 -08:00
|
|
|
return protoreflect.EnumNumber(e)
|
|
|
|
}
|
|
|
|
|
2018-11-28 18:25:20 -08:00
|
|
|
var Enums_NestedEnum_name = map[int32]string{
|
|
|
|
1: "UNO",
|
|
|
|
2: "DOS",
|
|
|
|
10: "DIEZ",
|
|
|
|
}
|
|
|
|
|
|
|
|
var Enums_NestedEnum_value = map[string]int32{
|
|
|
|
"UNO": 1,
|
|
|
|
"DOS": 2,
|
|
|
|
"DIEZ": 10,
|
|
|
|
}
|
|
|
|
|
|
|
|
func (x Enums_NestedEnum) Enum() *Enums_NestedEnum {
|
|
|
|
p := new(Enums_NestedEnum)
|
|
|
|
*p = x
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (x Enums_NestedEnum) String() string {
|
|
|
|
return proto.EnumName(Enums_NestedEnum_name, int32(x))
|
|
|
|
}
|
|
|
|
|
|
|
|
func (x *Enums_NestedEnum) UnmarshalJSON(data []byte) error {
|
|
|
|
value, err := proto.UnmarshalJSONEnum(Enums_NestedEnum_value, data, "Enums_NestedEnum")
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
*x = Enums_NestedEnum(value)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{1, 0}
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
// Scalars contains optional scalar fields.
|
|
|
|
type Scalars struct {
|
|
|
|
OptBool *bool `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
|
|
|
|
OptInt32 *int32 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
|
|
|
|
OptInt64 *int64 `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
|
|
|
|
OptUint32 *uint32 `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
|
|
|
|
OptUint64 *uint64 `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
|
|
|
|
OptSint32 *int32 `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
|
|
|
|
OptSint64 *int64 `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
|
|
|
|
OptFixed32 *uint32 `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
|
|
|
|
OptFixed64 *uint64 `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
|
|
|
|
OptSfixed32 *int32 `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
|
|
|
|
OptSfixed64 *int64 `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
|
|
|
|
OptFloat *float32 `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
|
|
|
|
OptDouble *float64 `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
|
|
|
|
OptBytes []byte `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
|
|
|
|
OptString *string `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
func (m *Scalars) ProtoReflect() protoreflect.Message {
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2018-11-28 18:25:20 -08:00
|
|
|
func (m *Scalars) Reset() { *m = Scalars{} }
|
|
|
|
func (m *Scalars) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Scalars) ProtoMessage() {}
|
|
|
|
func (*Scalars) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{0}
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Scalars.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Scalars) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Scalars.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Scalars) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Scalars.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Scalars) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Scalars.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Scalars proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptBool() bool {
|
|
|
|
if m != nil && m.OptBool != nil {
|
|
|
|
return *m.OptBool
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptInt32() int32 {
|
|
|
|
if m != nil && m.OptInt32 != nil {
|
|
|
|
return *m.OptInt32
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptInt64() int64 {
|
|
|
|
if m != nil && m.OptInt64 != nil {
|
|
|
|
return *m.OptInt64
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptUint32() uint32 {
|
|
|
|
if m != nil && m.OptUint32 != nil {
|
|
|
|
return *m.OptUint32
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptUint64() uint64 {
|
|
|
|
if m != nil && m.OptUint64 != nil {
|
|
|
|
return *m.OptUint64
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptSint32() int32 {
|
|
|
|
if m != nil && m.OptSint32 != nil {
|
|
|
|
return *m.OptSint32
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptSint64() int64 {
|
|
|
|
if m != nil && m.OptSint64 != nil {
|
|
|
|
return *m.OptSint64
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptFixed32() uint32 {
|
|
|
|
if m != nil && m.OptFixed32 != nil {
|
|
|
|
return *m.OptFixed32
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptFixed64() uint64 {
|
|
|
|
if m != nil && m.OptFixed64 != nil {
|
|
|
|
return *m.OptFixed64
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptSfixed32() int32 {
|
|
|
|
if m != nil && m.OptSfixed32 != nil {
|
|
|
|
return *m.OptSfixed32
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptSfixed64() int64 {
|
|
|
|
if m != nil && m.OptSfixed64 != nil {
|
|
|
|
return *m.OptSfixed64
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptFloat() float32 {
|
|
|
|
if m != nil && m.OptFloat != nil {
|
|
|
|
return *m.OptFloat
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptDouble() float64 {
|
|
|
|
if m != nil && m.OptDouble != nil {
|
|
|
|
return *m.OptDouble
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptBytes() []byte {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptBytes
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Scalars) GetOptString() string {
|
|
|
|
if m != nil && m.OptString != nil {
|
|
|
|
return *m.OptString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
// Message contains enum fields.
|
|
|
|
type Enums struct {
|
|
|
|
OptEnum *Enum `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pb2.Enum" json:"opt_enum,omitempty"`
|
|
|
|
RptEnum []Enum `protobuf:"varint,2,rep,name=rpt_enum,json=rptEnum,enum=pb2.Enum" json:"rpt_enum,omitempty"`
|
|
|
|
OptNestedEnum *Enums_NestedEnum `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pb2.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
|
|
|
|
RptNestedEnum []Enums_NestedEnum `protobuf:"varint,4,rep,name=rpt_nested_enum,json=rptNestedEnum,enum=pb2.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Enums) ProtoReflect() protoreflect.Message {
|
|
|
|
return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
|
|
|
|
}
|
|
|
|
func (m *Enums) Reset() { *m = Enums{} }
|
|
|
|
func (m *Enums) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Enums) ProtoMessage() {}
|
|
|
|
func (*Enums) Descriptor() ([]byte, []int) {
|
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{1}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Enums) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Enums.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Enums) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Enums.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Enums) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Enums.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Enums) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Enums.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Enums proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *Enums) GetOptEnum() Enum {
|
|
|
|
if m != nil && m.OptEnum != nil {
|
|
|
|
return *m.OptEnum
|
|
|
|
}
|
|
|
|
return Enum_ONE
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Enums) GetRptEnum() []Enum {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptEnum
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Enums) GetOptNestedEnum() Enums_NestedEnum {
|
|
|
|
if m != nil && m.OptNestedEnum != nil {
|
|
|
|
return *m.OptNestedEnum
|
|
|
|
}
|
|
|
|
return Enums_UNO
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Enums) GetRptNestedEnum() []Enums_NestedEnum {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptNestedEnum
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2018-11-28 18:25:20 -08:00
|
|
|
// Message contains repeated fields.
|
|
|
|
type Repeats struct {
|
|
|
|
RptBool []bool `protobuf:"varint,1,rep,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
|
|
|
|
RptInt32 []int32 `protobuf:"varint,2,rep,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
|
|
|
|
RptInt64 []int64 `protobuf:"varint,3,rep,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
|
|
|
|
RptUint32 []uint32 `protobuf:"varint,4,rep,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
|
|
|
|
RptUint64 []uint64 `protobuf:"varint,5,rep,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
|
|
|
|
RptFloat []float32 `protobuf:"fixed32,6,rep,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
|
|
|
|
RptDouble []float64 `protobuf:"fixed64,7,rep,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
|
2019-02-13 14:13:21 -08:00
|
|
|
RptString []string `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
|
|
|
|
RptBytes [][]byte `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
|
2018-11-28 18:25:20 -08:00
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
func (m *Repeats) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2018-11-28 18:25:20 -08:00
|
|
|
func (m *Repeats) Reset() { *m = Repeats{} }
|
|
|
|
func (m *Repeats) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Repeats) ProtoMessage() {}
|
|
|
|
func (*Repeats) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{2}
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Repeats.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Repeats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Repeats.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Repeats) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Repeats.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Repeats) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Repeats.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Repeats) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Repeats.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Repeats proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptBool() []bool {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptBool
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptInt32() []int32 {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptInt32
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptInt64() []int64 {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptInt64
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptUint32() []uint32 {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptUint32
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptUint64() []uint64 {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptUint64
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptFloat() []float32 {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptFloat
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptDouble() []float64 {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptDouble
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptString() []string {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptString
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Repeats) GetRptBytes() [][]byte {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptBytes
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
// Message type used as submessage.
|
|
|
|
type Nested struct {
|
|
|
|
OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
|
|
|
|
OptNested *Nested `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) ProtoReflect() protoreflect.Message {
|
|
|
|
return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) Reset() { *m = Nested{} }
|
|
|
|
func (m *Nested) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Nested) ProtoMessage() {}
|
|
|
|
func (*Nested) Descriptor() ([]byte, []int) {
|
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{3}
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Nested.Unmarshal(m, b)
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Nested.Merge(m, src)
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Nested.Size(m)
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Nested.DiscardUnknown(m)
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
var xxx_messageInfo_Nested proto.InternalMessageInfo
|
2018-11-28 18:25:20 -08:00
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) GetOptString() string {
|
|
|
|
if m != nil && m.OptString != nil {
|
|
|
|
return *m.OptString
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
2019-02-13 14:13:21 -08:00
|
|
|
return ""
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nested) GetOptNested() *Nested {
|
2018-11-28 18:25:20 -08:00
|
|
|
if m != nil {
|
2019-02-13 14:13:21 -08:00
|
|
|
return m.OptNested
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// Message contains message and group fields.
|
|
|
|
type Nests struct {
|
|
|
|
OptNested *Nested `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
|
|
|
|
Optgroup *Nests_OptGroup `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
|
2019-02-13 14:13:21 -08:00
|
|
|
RptNested []*Nested `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
|
|
|
|
Rptgroup []*Nests_RptGroup `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
|
2018-11-28 18:25:20 -08:00
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
func (m *Nests) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[4].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2018-11-28 18:25:20 -08:00
|
|
|
func (m *Nests) Reset() { *m = Nests{} }
|
|
|
|
func (m *Nests) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Nests) ProtoMessage() {}
|
|
|
|
func (*Nests) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{4}
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Nests.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Nests) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Nests.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Nests) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Nests.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Nests) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Nests.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Nests proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *Nests) GetOptNested() *Nested {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptNested
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests) GetOptgroup() *Nests_OptGroup {
|
|
|
|
if m != nil {
|
|
|
|
return m.Optgroup
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests) GetRptNested() []*Nested {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptNested
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests) GetRptgroup() []*Nests_RptGroup {
|
|
|
|
if m != nil {
|
|
|
|
return m.Rptgroup
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// Message contains required fields.
|
|
|
|
type Requireds struct {
|
|
|
|
ReqBool *bool `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
|
2019-02-13 14:13:21 -08:00
|
|
|
ReqSfixed64 *int64 `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
|
|
|
|
ReqDouble *float64 `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
|
|
|
|
ReqString *string `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
|
|
|
|
ReqEnum *Enum `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=pb2.Enum" json:"req_enum,omitempty"`
|
|
|
|
ReqNested *Nested `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
|
2018-11-28 18:25:20 -08:00
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
func (m *Requireds) ProtoReflect() protoreflect.Message {
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[5].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2018-11-28 18:25:20 -08:00
|
|
|
func (m *Requireds) Reset() { *m = Requireds{} }
|
|
|
|
func (m *Requireds) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Requireds) ProtoMessage() {}
|
|
|
|
func (*Requireds) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{5}
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Requireds) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Requireds.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Requireds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Requireds.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Requireds) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Requireds.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Requireds) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Requireds.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Requireds) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Requireds.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Requireds proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *Requireds) GetReqBool() bool {
|
|
|
|
if m != nil && m.ReqBool != nil {
|
|
|
|
return *m.ReqBool
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Requireds) GetReqSfixed64() int64 {
|
|
|
|
if m != nil && m.ReqSfixed64 != nil {
|
|
|
|
return *m.ReqSfixed64
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Requireds) GetReqDouble() float64 {
|
|
|
|
if m != nil && m.ReqDouble != nil {
|
|
|
|
return *m.ReqDouble
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Requireds) GetReqString() string {
|
|
|
|
if m != nil && m.ReqString != nil {
|
|
|
|
return *m.ReqString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Requireds) GetReqEnum() Enum {
|
|
|
|
if m != nil && m.ReqEnum != nil {
|
|
|
|
return *m.ReqEnum
|
|
|
|
}
|
2019-02-13 14:13:21 -08:00
|
|
|
return Enum_ONE
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Requireds) GetReqNested() *Nested {
|
|
|
|
if m != nil {
|
|
|
|
return m.ReqNested
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2018-12-06 15:28:53 -08:00
|
|
|
// Message contains both required and optional fields.
|
|
|
|
type PartialRequired struct {
|
|
|
|
ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
|
|
|
|
OptString *string `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
func (m *PartialRequired) ProtoReflect() protoreflect.Message {
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[6].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2018-12-06 15:28:53 -08:00
|
|
|
func (m *PartialRequired) Reset() { *m = PartialRequired{} }
|
|
|
|
func (m *PartialRequired) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*PartialRequired) ProtoMessage() {}
|
|
|
|
func (*PartialRequired) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{6}
|
2018-12-06 15:28:53 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *PartialRequired) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_PartialRequired.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *PartialRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_PartialRequired.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *PartialRequired) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_PartialRequired.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *PartialRequired) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_PartialRequired.Size(m)
|
|
|
|
}
|
|
|
|
func (m *PartialRequired) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_PartialRequired.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_PartialRequired proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *PartialRequired) GetReqString() string {
|
|
|
|
if m != nil && m.ReqString != nil {
|
|
|
|
return *m.ReqString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *PartialRequired) GetOptString() string {
|
|
|
|
if m != nil && m.OptString != nil {
|
|
|
|
return *m.OptString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
type NestedWithRequired struct {
|
|
|
|
ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
func (m *NestedWithRequired) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[7].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2018-12-06 15:28:53 -08:00
|
|
|
func (m *NestedWithRequired) Reset() { *m = NestedWithRequired{} }
|
|
|
|
func (m *NestedWithRequired) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*NestedWithRequired) ProtoMessage() {}
|
|
|
|
func (*NestedWithRequired) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{7}
|
2018-12-06 15:28:53 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *NestedWithRequired) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_NestedWithRequired.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *NestedWithRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_NestedWithRequired.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *NestedWithRequired) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_NestedWithRequired.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *NestedWithRequired) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_NestedWithRequired.Size(m)
|
|
|
|
}
|
|
|
|
func (m *NestedWithRequired) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_NestedWithRequired.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_NestedWithRequired proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *NestedWithRequired) GetReqString() string {
|
|
|
|
if m != nil && m.ReqString != nil {
|
|
|
|
return *m.ReqString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
type IndirectRequired struct {
|
2019-02-13 14:13:21 -08:00
|
|
|
OptNested *NestedWithRequired `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
|
|
|
|
RptNested []*NestedWithRequired `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
|
|
|
|
StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
|
|
|
// Types that are valid to be assigned to Union:
|
|
|
|
// *IndirectRequired_OneofNested
|
|
|
|
Union isIndirectRequired_Union `protobuf_oneof:"union"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
2018-12-06 15:28:53 -08:00
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
func (m *IndirectRequired) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[8].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2018-12-06 15:28:53 -08:00
|
|
|
func (m *IndirectRequired) Reset() { *m = IndirectRequired{} }
|
|
|
|
func (m *IndirectRequired) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*IndirectRequired) ProtoMessage() {}
|
|
|
|
func (*IndirectRequired) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{8}
|
2018-12-06 15:28:53 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *IndirectRequired) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_IndirectRequired.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *IndirectRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_IndirectRequired.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *IndirectRequired) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_IndirectRequired.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *IndirectRequired) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_IndirectRequired.Size(m)
|
|
|
|
}
|
|
|
|
func (m *IndirectRequired) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_IndirectRequired.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_IndirectRequired proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *IndirectRequired) GetOptNested() *NestedWithRequired {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptNested
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *IndirectRequired) GetRptNested() []*NestedWithRequired {
|
|
|
|
if m != nil {
|
|
|
|
return m.RptNested
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *IndirectRequired) GetStrToNested() map[string]*NestedWithRequired {
|
|
|
|
if m != nil {
|
|
|
|
return m.StrToNested
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
type isIndirectRequired_Union interface {
|
|
|
|
isIndirectRequired_Union()
|
|
|
|
}
|
|
|
|
|
|
|
|
type IndirectRequired_OneofNested struct {
|
|
|
|
OneofNested *NestedWithRequired `protobuf:"bytes,4,opt,name=oneof_nested,json=oneofNested,oneof"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*IndirectRequired_OneofNested) isIndirectRequired_Union() {}
|
|
|
|
|
|
|
|
func (m *IndirectRequired) GetUnion() isIndirectRequired_Union {
|
|
|
|
if m != nil {
|
|
|
|
return m.Union
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *IndirectRequired) GetOneofNested() *NestedWithRequired {
|
|
|
|
if x, ok := m.GetUnion().(*IndirectRequired_OneofNested); ok {
|
|
|
|
return x.OneofNested
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// XXX_OneofWrappers is for the internal use of the proto package.
|
|
|
|
func (*IndirectRequired) XXX_OneofWrappers() []interface{} {
|
|
|
|
return []interface{}{
|
|
|
|
(*IndirectRequired_OneofNested)(nil),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-17 17:13:07 -08:00
|
|
|
type Extensions struct {
|
|
|
|
OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
|
|
|
|
OptBool *bool `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
|
|
|
|
OptInt32 *int32 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
proto.XXX_InternalExtensions `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Extensions) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[9].MessageOf(m)
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
func (m *Extensions) Reset() { *m = Extensions{} }
|
|
|
|
func (m *Extensions) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Extensions) ProtoMessage() {}
|
|
|
|
func (*Extensions) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{9}
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var extRange_Extensions = []proto.ExtensionRange{
|
|
|
|
{Start: 20, End: 100},
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*Extensions) ExtensionRangeArray() []proto.ExtensionRange {
|
|
|
|
return extRange_Extensions
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Extensions) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Extensions.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Extensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Extensions.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Extensions) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Extensions.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Extensions) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Extensions.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Extensions) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Extensions.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Extensions proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *Extensions) GetOptString() string {
|
|
|
|
if m != nil && m.OptString != nil {
|
|
|
|
return *m.OptString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Extensions) GetOptBool() bool {
|
|
|
|
if m != nil && m.OptBool != nil {
|
|
|
|
return *m.OptBool
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Extensions) GetOptInt32() int32 {
|
|
|
|
if m != nil && m.OptInt32 != nil {
|
|
|
|
return *m.OptInt32
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
type ExtensionsContainer struct {
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *ExtensionsContainer) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[10].MessageOf(m)
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
func (m *ExtensionsContainer) Reset() { *m = ExtensionsContainer{} }
|
|
|
|
func (m *ExtensionsContainer) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*ExtensionsContainer) ProtoMessage() {}
|
|
|
|
func (*ExtensionsContainer) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{10}
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *ExtensionsContainer) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_ExtensionsContainer.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *ExtensionsContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_ExtensionsContainer.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *ExtensionsContainer) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_ExtensionsContainer.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *ExtensionsContainer) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_ExtensionsContainer.Size(m)
|
|
|
|
}
|
|
|
|
func (m *ExtensionsContainer) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_ExtensionsContainer.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_ExtensionsContainer proto.InternalMessageInfo
|
|
|
|
|
|
|
|
type MessageSet struct {
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *MessageSet) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[11].MessageOf(m)
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
func (m *MessageSet) Reset() { *m = MessageSet{} }
|
|
|
|
func (m *MessageSet) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*MessageSet) ProtoMessage() {}
|
|
|
|
func (*MessageSet) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{11}
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var extRange_MessageSet = []proto.ExtensionRange{
|
|
|
|
{Start: 4, End: 2147483646},
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*MessageSet) ExtensionRangeArray() []proto.ExtensionRange {
|
|
|
|
return extRange_MessageSet
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *MessageSet) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_MessageSet.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *MessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_MessageSet.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *MessageSet) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_MessageSet.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *MessageSet) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_MessageSet.Size(m)
|
|
|
|
}
|
|
|
|
func (m *MessageSet) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_MessageSet.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_MessageSet proto.InternalMessageInfo
|
|
|
|
|
|
|
|
type MessageSetExtension struct {
|
|
|
|
OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *MessageSetExtension) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[12].MessageOf(m)
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
func (m *MessageSetExtension) Reset() { *m = MessageSetExtension{} }
|
|
|
|
func (m *MessageSetExtension) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*MessageSetExtension) ProtoMessage() {}
|
|
|
|
func (*MessageSetExtension) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{12}
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *MessageSetExtension) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_MessageSetExtension.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *MessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_MessageSetExtension.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *MessageSetExtension) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_MessageSetExtension.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *MessageSetExtension) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_MessageSetExtension.Size(m)
|
|
|
|
}
|
|
|
|
func (m *MessageSetExtension) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_MessageSetExtension.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_MessageSetExtension proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *MessageSetExtension) GetOptString() string {
|
|
|
|
if m != nil && m.OptString != nil {
|
|
|
|
return *m.OptString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
2019-01-07 18:56:57 -08:00
|
|
|
type FakeMessageSet struct {
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
proto.XXX_InternalExtensions `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *FakeMessageSet) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[13].MessageOf(m)
|
2019-01-07 18:56:57 -08:00
|
|
|
}
|
|
|
|
func (m *FakeMessageSet) Reset() { *m = FakeMessageSet{} }
|
|
|
|
func (m *FakeMessageSet) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*FakeMessageSet) ProtoMessage() {}
|
|
|
|
func (*FakeMessageSet) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{13}
|
2019-01-07 18:56:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var extRange_FakeMessageSet = []proto.ExtensionRange{
|
|
|
|
{Start: 4, End: 536870911},
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*FakeMessageSet) ExtensionRangeArray() []proto.ExtensionRange {
|
|
|
|
return extRange_FakeMessageSet
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *FakeMessageSet) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_FakeMessageSet.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *FakeMessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_FakeMessageSet.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *FakeMessageSet) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_FakeMessageSet.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *FakeMessageSet) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_FakeMessageSet.Size(m)
|
|
|
|
}
|
|
|
|
func (m *FakeMessageSet) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_FakeMessageSet.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_FakeMessageSet proto.InternalMessageInfo
|
|
|
|
|
|
|
|
type FakeMessageSetExtension struct {
|
|
|
|
OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *FakeMessageSetExtension) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[14].MessageOf(m)
|
2019-01-07 18:56:57 -08:00
|
|
|
}
|
|
|
|
func (m *FakeMessageSetExtension) Reset() { *m = FakeMessageSetExtension{} }
|
|
|
|
func (m *FakeMessageSetExtension) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*FakeMessageSetExtension) ProtoMessage() {}
|
|
|
|
func (*FakeMessageSetExtension) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{14}
|
2019-01-07 18:56:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *FakeMessageSetExtension) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_FakeMessageSetExtension.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *FakeMessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_FakeMessageSetExtension.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *FakeMessageSetExtension) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_FakeMessageSetExtension.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *FakeMessageSetExtension) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_FakeMessageSetExtension.Size(m)
|
|
|
|
}
|
|
|
|
func (m *FakeMessageSetExtension) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_FakeMessageSetExtension.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_FakeMessageSetExtension proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *FakeMessageSetExtension) GetOptString() string {
|
|
|
|
if m != nil && m.OptString != nil {
|
|
|
|
return *m.OptString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
2018-11-28 18:25:20 -08:00
|
|
|
// Message contains well-known type fields.
|
|
|
|
type KnownTypes struct {
|
|
|
|
OptBool *wrappers.BoolValue `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
|
|
|
|
OptInt32 *wrappers.Int32Value `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
|
|
|
|
OptInt64 *wrappers.Int64Value `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
|
|
|
|
OptUint32 *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
|
|
|
|
OptUint64 *wrappers.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
|
|
|
|
OptFloat *wrappers.FloatValue `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
|
|
|
|
OptDouble *wrappers.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
|
|
|
|
OptString *wrappers.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
|
|
|
|
OptBytes *wrappers.BytesValue `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
|
|
|
|
OptDuration *duration.Duration `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
|
|
|
|
OptTimestamp *timestamp.Timestamp `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
|
|
|
|
OptStruct *_struct.Struct `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
|
|
|
|
OptList *_struct.ListValue `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
|
|
|
|
OptValue *_struct.Value `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
|
|
|
|
OptEmpty *empty.Empty `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
|
|
|
|
OptAny *any.Any `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
|
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
func (m *KnownTypes) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[15].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2018-11-28 18:25:20 -08:00
|
|
|
func (m *KnownTypes) Reset() { *m = KnownTypes{} }
|
|
|
|
func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*KnownTypes) ProtoMessage() {}
|
|
|
|
func (*KnownTypes) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{15}
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_KnownTypes.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *KnownTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_KnownTypes.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *KnownTypes) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_KnownTypes.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *KnownTypes) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_KnownTypes.Size(m)
|
|
|
|
}
|
|
|
|
func (m *KnownTypes) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_KnownTypes.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_KnownTypes proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptBool() *wrappers.BoolValue {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptBool
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptInt32() *wrappers.Int32Value {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptInt32
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptInt64() *wrappers.Int64Value {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptInt64
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptUint32() *wrappers.UInt32Value {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptUint32
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptUint64() *wrappers.UInt64Value {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptUint64
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptFloat() *wrappers.FloatValue {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptFloat
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptDouble() *wrappers.DoubleValue {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptDouble
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptString() *wrappers.StringValue {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptString
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptBytes() *wrappers.BytesValue {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptBytes
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptDuration() *duration.Duration {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptDuration
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptTimestamp() *timestamp.Timestamp {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptTimestamp
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptStruct() *_struct.Struct {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptStruct
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptList() *_struct.ListValue {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptList
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptValue() *_struct.Value {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptValue
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptEmpty() *empty.Empty {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptEmpty
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *KnownTypes) GetOptAny() *any.Any {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptAny
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2018-12-13 14:19:50 -08:00
|
|
|
type Nests_OptGroup struct {
|
2019-02-13 14:13:21 -08:00
|
|
|
OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
|
|
|
|
OptNested *Nested `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
|
|
|
|
Optnestedgroup *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
|
2018-12-13 14:19:50 -08:00
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests_OptGroup) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[16].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup) Reset() { *m = Nests_OptGroup{} }
|
|
|
|
func (m *Nests_OptGroup) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Nests_OptGroup) ProtoMessage() {}
|
|
|
|
func (*Nests_OptGroup) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{4, 0}
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests_OptGroup) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Nests_OptGroup.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Nests_OptGroup.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Nests_OptGroup.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Nests_OptGroup.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Nests_OptGroup.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Nests_OptGroup proto.InternalMessageInfo
|
|
|
|
|
|
|
|
func (m *Nests_OptGroup) GetOptString() string {
|
|
|
|
if m != nil && m.OptString != nil {
|
|
|
|
return *m.OptString
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests_OptGroup) GetOptNested() *Nested {
|
|
|
|
if m != nil {
|
|
|
|
return m.OptNested
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests_OptGroup) GetOptnestedgroup() *Nests_OptGroup_OptNestedGroup {
|
|
|
|
if m != nil {
|
|
|
|
return m.Optnestedgroup
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type Nests_RptGroup struct {
|
2019-02-13 14:13:21 -08:00
|
|
|
RptString []string `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
|
2018-12-13 14:19:50 -08:00
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests_RptGroup) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[17].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
|
|
|
func (m *Nests_RptGroup) Reset() { *m = Nests_RptGroup{} }
|
|
|
|
func (m *Nests_RptGroup) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Nests_RptGroup) ProtoMessage() {}
|
|
|
|
func (*Nests_RptGroup) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{4, 1}
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests_RptGroup) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Nests_RptGroup.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Nests_RptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Nests_RptGroup.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Nests_RptGroup) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Nests_RptGroup.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Nests_RptGroup) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Nests_RptGroup.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Nests_RptGroup) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Nests_RptGroup.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Nests_RptGroup proto.InternalMessageInfo
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nests_RptGroup) GetRptString() []string {
|
2018-12-13 14:19:50 -08:00
|
|
|
if m != nil {
|
2019-02-13 14:13:21 -08:00
|
|
|
return m.RptString
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type Nests_OptGroup_OptNestedGroup struct {
|
2019-02-13 14:13:21 -08:00
|
|
|
OptFixed32 *uint32 `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
|
2018-12-13 14:19:50 -08:00
|
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
|
|
XXX_unrecognized []byte `json:"-"`
|
|
|
|
XXX_sizecache int32 `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
|
2019-02-13 14:13:21 -08:00
|
|
|
return xxx_Test_protoFile_messageTypes[18].MessageOf(m)
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) Reset() { *m = Nests_OptGroup_OptNestedGroup{} }
|
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) String() string { return proto.CompactTextString(m) }
|
|
|
|
func (*Nests_OptGroup_OptNestedGroup) ProtoMessage() {}
|
|
|
|
func (*Nests_OptGroup_OptNestedGroup) Descriptor() ([]byte, []int) {
|
2019-02-13 14:13:21 -08:00
|
|
|
return fileDescriptor_72e37deb177b50f8_gzipped, []int{4, 0, 0}
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) XXX_Unmarshal(b []byte) error {
|
|
|
|
return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Unmarshal(m, b)
|
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
|
|
return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Marshal(b, m, deterministic)
|
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) XXX_Merge(src proto.Message) {
|
|
|
|
xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Merge(m, src)
|
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) XXX_Size() int {
|
|
|
|
return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Size(m)
|
|
|
|
}
|
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) XXX_DiscardUnknown() {
|
|
|
|
xxx_messageInfo_Nests_OptGroup_OptNestedGroup.DiscardUnknown(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
var xxx_messageInfo_Nests_OptGroup_OptNestedGroup proto.InternalMessageInfo
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
func (m *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
|
|
|
|
if m != nil && m.OptFixed32 != nil {
|
|
|
|
return *m.OptFixed32
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
2019-02-13 14:13:21 -08:00
|
|
|
return 0
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|
|
|
|
|
2018-12-17 17:13:07 -08:00
|
|
|
var E_OptExtBool = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: (*bool)(nil),
|
|
|
|
Field: 21,
|
|
|
|
Name: "pb2.opt_ext_bool",
|
|
|
|
Tag: "varint,21,opt,name=opt_ext_bool",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_OptExtString = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: (*string)(nil),
|
|
|
|
Field: 22,
|
|
|
|
Name: "pb2.opt_ext_string",
|
|
|
|
Tag: "bytes,22,opt,name=opt_ext_string",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_OptExtEnum = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: (*Enum)(nil),
|
|
|
|
Field: 23,
|
|
|
|
Name: "pb2.opt_ext_enum",
|
|
|
|
Tag: "varint,23,opt,name=opt_ext_enum,enum=pb2.Enum",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_OptExtNested = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: (*Nested)(nil),
|
|
|
|
Field: 24,
|
|
|
|
Name: "pb2.opt_ext_nested",
|
|
|
|
Tag: "bytes,24,opt,name=opt_ext_nested",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_RptExtFixed32 = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: ([]uint32)(nil),
|
|
|
|
Field: 31,
|
|
|
|
Name: "pb2.rpt_ext_fixed32",
|
|
|
|
Tag: "fixed32,31,rep,name=rpt_ext_fixed32",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_RptExtEnum = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: ([]Enum)(nil),
|
|
|
|
Field: 32,
|
|
|
|
Name: "pb2.rpt_ext_enum",
|
|
|
|
Tag: "varint,32,rep,name=rpt_ext_enum,enum=pb2.Enum",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_RptExtNested = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: ([]*Nested)(nil),
|
|
|
|
Field: 33,
|
|
|
|
Name: "pb2.rpt_ext_nested",
|
|
|
|
Tag: "bytes,33,rep,name=rpt_ext_nested",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
2019-01-07 18:56:57 -08:00
|
|
|
var E_MessageSetExtension = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*MessageSet)(nil),
|
|
|
|
ExtensionType: (*FakeMessageSetExtension)(nil),
|
|
|
|
Field: 50,
|
|
|
|
Name: "pb2.",
|
|
|
|
Tag: "bytes,50,opt,name=message_set_extension",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2019-01-07 18:56:57 -08:00
|
|
|
}
|
|
|
|
|
2018-12-17 17:13:07 -08:00
|
|
|
var E_ExtensionsContainer_OptExtBool = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: (*bool)(nil),
|
|
|
|
Field: 51,
|
|
|
|
Name: "pb2.ExtensionsContainer.opt_ext_bool",
|
|
|
|
Tag: "varint,51,opt,name=opt_ext_bool",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_ExtensionsContainer_OptExtString = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: (*string)(nil),
|
|
|
|
Field: 52,
|
|
|
|
Name: "pb2.ExtensionsContainer.opt_ext_string",
|
|
|
|
Tag: "bytes,52,opt,name=opt_ext_string",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_ExtensionsContainer_OptExtEnum = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: (*Enum)(nil),
|
|
|
|
Field: 53,
|
|
|
|
Name: "pb2.ExtensionsContainer.opt_ext_enum",
|
|
|
|
Tag: "varint,53,opt,name=opt_ext_enum,enum=pb2.Enum",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_ExtensionsContainer_OptExtNested = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: (*Nested)(nil),
|
|
|
|
Field: 54,
|
|
|
|
Name: "pb2.ExtensionsContainer.opt_ext_nested",
|
|
|
|
Tag: "bytes,54,opt,name=opt_ext_nested",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_ExtensionsContainer_RptExtString = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: ([]string)(nil),
|
|
|
|
Field: 61,
|
|
|
|
Name: "pb2.ExtensionsContainer.rpt_ext_string",
|
|
|
|
Tag: "bytes,61,rep,name=rpt_ext_string",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_ExtensionsContainer_RptExtEnum = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: ([]Enum)(nil),
|
|
|
|
Field: 62,
|
|
|
|
Name: "pb2.ExtensionsContainer.rpt_ext_enum",
|
|
|
|
Tag: "varint,62,rep,name=rpt_ext_enum,enum=pb2.Enum",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_ExtensionsContainer_RptExtNested = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*Extensions)(nil),
|
|
|
|
ExtensionType: ([]*Nested)(nil),
|
|
|
|
Field: 63,
|
|
|
|
Name: "pb2.ExtensionsContainer.rpt_ext_nested",
|
|
|
|
Tag: "bytes,63,rep,name=rpt_ext_nested",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_MessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*MessageSet)(nil),
|
|
|
|
ExtensionType: (*MessageSetExtension)(nil),
|
|
|
|
Field: 10,
|
|
|
|
Name: "pb2.MessageSetExtension",
|
|
|
|
Tag: "bytes,10,opt,name=message_set_extension",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_MessageSetExtension_NotMessageSetExtension = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*MessageSet)(nil),
|
|
|
|
ExtensionType: (*MessageSetExtension)(nil),
|
|
|
|
Field: 20,
|
|
|
|
Name: "pb2.MessageSetExtension.not_message_set_extension",
|
|
|
|
Tag: "bytes,20,opt,name=not_message_set_extension",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
var E_MessageSetExtension_ExtNested = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*MessageSet)(nil),
|
|
|
|
ExtensionType: (*Nested)(nil),
|
|
|
|
Field: 30,
|
|
|
|
Name: "pb2.MessageSetExtension.ext_nested",
|
|
|
|
Tag: "bytes,30,opt,name=ext_nested",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2018-12-17 17:13:07 -08:00
|
|
|
}
|
|
|
|
|
2019-01-07 18:56:57 -08:00
|
|
|
var E_FakeMessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{
|
|
|
|
ExtendedType: (*FakeMessageSet)(nil),
|
|
|
|
ExtensionType: (*FakeMessageSetExtension)(nil),
|
|
|
|
Field: 10,
|
|
|
|
Name: "pb2.FakeMessageSetExtension.message_set_extension",
|
|
|
|
Tag: "bytes,10,opt,name=message_set_extension",
|
2019-02-13 14:13:21 -08:00
|
|
|
Filename: "encoding/testprotos/pb2/test.proto",
|
2019-01-07 18:56:57 -08:00
|
|
|
}
|
|
|
|
|
2018-11-28 18:25:20 -08:00
|
|
|
func init() {
|
2019-02-13 14:13:21 -08:00
|
|
|
proto.RegisterFile("encoding/testprotos/pb2/test.proto", fileDescriptor_72e37deb177b50f8_gzipped)
|
2018-11-28 18:25:20 -08:00
|
|
|
proto.RegisterEnum("pb2.Enum", Enum_name, Enum_value)
|
|
|
|
proto.RegisterEnum("pb2.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
|
|
|
|
proto.RegisterType((*Scalars)(nil), "pb2.Scalars")
|
|
|
|
proto.RegisterType((*Enums)(nil), "pb2.Enums")
|
2019-02-13 14:13:21 -08:00
|
|
|
proto.RegisterType((*Repeats)(nil), "pb2.Repeats")
|
2018-11-28 18:25:20 -08:00
|
|
|
proto.RegisterType((*Nested)(nil), "pb2.Nested")
|
2019-02-13 14:13:21 -08:00
|
|
|
proto.RegisterType((*Nests)(nil), "pb2.Nests")
|
2018-11-28 18:25:20 -08:00
|
|
|
proto.RegisterType((*Requireds)(nil), "pb2.Requireds")
|
2018-12-06 15:28:53 -08:00
|
|
|
proto.RegisterType((*PartialRequired)(nil), "pb2.PartialRequired")
|
|
|
|
proto.RegisterType((*NestedWithRequired)(nil), "pb2.NestedWithRequired")
|
|
|
|
proto.RegisterType((*IndirectRequired)(nil), "pb2.IndirectRequired")
|
|
|
|
proto.RegisterMapType((map[string]*NestedWithRequired)(nil), "pb2.IndirectRequired.StrToNestedEntry")
|
2018-12-17 17:13:07 -08:00
|
|
|
proto.RegisterType((*Extensions)(nil), "pb2.Extensions")
|
|
|
|
proto.RegisterType((*ExtensionsContainer)(nil), "pb2.ExtensionsContainer")
|
|
|
|
proto.RegisterType((*MessageSet)(nil), "pb2.MessageSet")
|
|
|
|
proto.RegisterType((*MessageSetExtension)(nil), "pb2.MessageSetExtension")
|
2019-01-07 18:56:57 -08:00
|
|
|
proto.RegisterType((*FakeMessageSet)(nil), "pb2.FakeMessageSet")
|
|
|
|
proto.RegisterType((*FakeMessageSetExtension)(nil), "pb2.FakeMessageSetExtension")
|
2018-11-28 18:25:20 -08:00
|
|
|
proto.RegisterType((*KnownTypes)(nil), "pb2.KnownTypes")
|
2018-12-13 14:19:50 -08:00
|
|
|
proto.RegisterType((*Nests_OptGroup)(nil), "pb2.Nests.OptGroup")
|
|
|
|
proto.RegisterType((*Nests_RptGroup)(nil), "pb2.Nests.RptGroup")
|
|
|
|
proto.RegisterType((*Nests_OptGroup_OptNestedGroup)(nil), "pb2.Nests.OptGroup.OptNestedGroup")
|
2018-12-17 17:13:07 -08:00
|
|
|
proto.RegisterExtension(E_OptExtBool)
|
|
|
|
proto.RegisterExtension(E_OptExtString)
|
|
|
|
proto.RegisterExtension(E_OptExtEnum)
|
|
|
|
proto.RegisterExtension(E_OptExtNested)
|
|
|
|
proto.RegisterExtension(E_RptExtFixed32)
|
|
|
|
proto.RegisterExtension(E_RptExtEnum)
|
|
|
|
proto.RegisterExtension(E_RptExtNested)
|
2019-01-07 18:56:57 -08:00
|
|
|
proto.RegisterExtension(E_MessageSetExtension)
|
2018-12-17 17:13:07 -08:00
|
|
|
proto.RegisterExtension(E_ExtensionsContainer_OptExtBool)
|
|
|
|
proto.RegisterExtension(E_ExtensionsContainer_OptExtString)
|
|
|
|
proto.RegisterExtension(E_ExtensionsContainer_OptExtEnum)
|
|
|
|
proto.RegisterExtension(E_ExtensionsContainer_OptExtNested)
|
|
|
|
proto.RegisterExtension(E_ExtensionsContainer_RptExtString)
|
|
|
|
proto.RegisterExtension(E_ExtensionsContainer_RptExtEnum)
|
|
|
|
proto.RegisterExtension(E_ExtensionsContainer_RptExtNested)
|
|
|
|
proto.RegisterExtension(E_MessageSetExtension_MessageSetExtension)
|
|
|
|
proto.RegisterExtension(E_MessageSetExtension_NotMessageSetExtension)
|
|
|
|
proto.RegisterExtension(E_MessageSetExtension_ExtNested)
|
2019-01-07 18:56:57 -08:00
|
|
|
proto.RegisterExtension(E_FakeMessageSetExtension_MessageSetExtension)
|
2018-11-28 18:25:20 -08:00
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
var fileDescriptor_72e37deb177b50f8 = []byte{
|
|
|
|
// 5146 bytes of the wire-encoded FileDescriptorProto
|
|
|
|
0x0a, 0x22, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
|
|
|
|
0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70,
|
|
|
|
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x32, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
|
|
|
0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70,
|
|
|
|
0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
|
|
|
|
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
|
|
|
0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
|
|
|
0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
|
|
|
0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
|
|
|
0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
|
|
|
|
0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
|
|
|
0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
|
|
|
0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
|
|
|
0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
|
|
|
0x22, 0xda, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08,
|
|
|
|
0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
|
|
|
|
0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69,
|
|
|
|
0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49,
|
|
|
|
0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36,
|
|
|
|
0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36,
|
|
|
|
0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
|
|
|
|
0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
|
|
|
|
0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05,
|
|
|
|
0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
|
|
|
|
0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20,
|
|
|
|
0x01, 0x28, 0x11, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d,
|
|
|
|
0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01,
|
|
|
|
0x28, 0x12, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x0a,
|
|
|
|
0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01,
|
|
|
|
0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f,
|
|
|
|
0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20,
|
|
|
|
0x01, 0x28, 0x06, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
|
|
|
|
0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18,
|
|
|
|
0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
|
|
|
|
0x33, 0x32, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
|
|
|
|
0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69,
|
|
|
|
0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f,
|
|
|
|
0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f,
|
|
|
|
0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
|
|
|
|
0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c,
|
|
|
|
0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e,
|
|
|
|
0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d,
|
|
|
|
0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01,
|
|
|
|
0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xfb, 0x01,
|
|
|
|
0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65,
|
|
|
|
0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e,
|
|
|
|
0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x24, 0x0a,
|
|
|
|
0x08, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32,
|
|
|
|
0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x70, 0x74, 0x45,
|
|
|
|
0x6e, 0x75, 0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
|
|
|
|
0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70,
|
|
|
|
0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
|
|
|
|
0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
|
|
|
|
0x75, 0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
|
|
|
|
0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62,
|
|
|
|
0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
|
|
|
|
0x75, 0x6d, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
|
|
|
|
0x6d, 0x22, 0x28, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
|
|
|
|
0x07, 0x0a, 0x03, 0x55, 0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10,
|
|
|
|
0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x94, 0x02, 0x0a, 0x07,
|
|
|
|
0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62,
|
|
|
|
0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f,
|
|
|
|
0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
|
|
|
|
0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,
|
|
|
|
0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03,
|
|
|
|
0x28, 0x03, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a,
|
|
|
|
0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d,
|
|
|
|
0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x72,
|
|
|
|
0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52,
|
|
|
|
0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70,
|
|
|
|
0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x72,
|
|
|
|
0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x64,
|
|
|
|
0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x01, 0x52, 0x09, 0x72, 0x70, 0x74,
|
|
|
|
0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74,
|
|
|
|
0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53,
|
|
|
|
0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74,
|
|
|
|
0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x70, 0x74, 0x42, 0x79, 0x74,
|
|
|
|
0x65, 0x73, 0x22, 0x53, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
|
|
|
|
0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
|
|
|
0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f,
|
|
|
|
0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
|
|
|
0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70,
|
|
|
|
0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0xd3, 0x03, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74,
|
|
|
|
0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
|
|
|
|
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74,
|
|
|
|
0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a,
|
|
|
|
0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0a, 0x32,
|
|
|
|
0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47,
|
|
|
|
0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a,
|
|
|
|
0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03,
|
|
|
|
0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52,
|
|
|
|
0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x70,
|
|
|
|
0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x13, 0x2e, 0x70,
|
|
|
|
0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75,
|
|
|
|
0x70, 0x52, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xd4, 0x01, 0x0a, 0x08,
|
|
|
|
0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
|
|
|
|
0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70,
|
|
|
|
0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e,
|
|
|
|
0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62,
|
|
|
|
0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73,
|
|
|
|
0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
|
|
|
|
0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x22, 0x2e, 0x70, 0x62,
|
|
|
|
0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
|
|
|
|
0x2e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
|
|
|
|
0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a,
|
|
|
|
0x31, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
|
|
|
|
0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
|
|
|
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64,
|
|
|
|
0x33, 0x32, 0x1a, 0x29, 0x0a, 0x08, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d,
|
|
|
|
0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x03,
|
|
|
|
0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x72,
|
|
|
|
0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xd9, 0x01,
|
|
|
|
0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72,
|
|
|
|
0x65, 0x71, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x07, 0x72,
|
|
|
|
0x65, 0x71, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x66,
|
|
|
|
0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x02, 0x20, 0x02, 0x28, 0x10, 0x52, 0x0b, 0x72, 0x65,
|
|
|
|
0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71,
|
|
|
|
0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x01, 0x52, 0x09, 0x72,
|
|
|
|
0x65, 0x71, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f,
|
|
|
|
0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65,
|
|
|
|
0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x65,
|
|
|
|
0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e,
|
|
|
|
0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x71, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a,
|
|
|
|
0x0a, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x02, 0x28,
|
|
|
|
0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09,
|
|
|
|
0x72, 0x65, 0x71, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4f, 0x0a, 0x0f, 0x50, 0x61, 0x72,
|
|
|
|
0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
|
|
|
|
0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09,
|
|
|
|
0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
|
|
|
|
0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
|
|
|
|
0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x33, 0x0a, 0x12, 0x4e, 0x65,
|
|
|
|
0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
|
|
|
|
0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01,
|
|
|
|
0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22,
|
|
|
|
0xee, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75,
|
|
|
|
0x69, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
|
|
|
|
0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
|
2019-02-13 14:13:21 -08:00
|
|
|
0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a,
|
|
|
|
0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
|
|
|
|
0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74,
|
|
|
|
0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65,
|
|
|
|
0x73, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e,
|
|
|
|
0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62,
|
|
|
|
0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
|
|
|
|
0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
|
|
|
|
0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
|
|
|
|
0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
|
|
|
|
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73,
|
|
|
|
0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x48,
|
|
|
|
0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x57,
|
|
|
|
0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74,
|
|
|
|
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
|
|
|
0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
|
|
|
|
0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
|
|
|
|
0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61,
|
|
|
|
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e,
|
|
|
|
0x22, 0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d,
|
|
|
|
0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
|
|
|
|
0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a,
|
|
|
|
0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52,
|
|
|
|
0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f,
|
|
|
|
0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74,
|
|
|
|
0x49, 0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04, 0x08, 0x14, 0x10, 0x65, 0x22, 0xba, 0x03, 0x0a, 0x13,
|
|
|
|
0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
|
|
|
|
0x6e, 0x65, 0x72, 0x32, 0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62,
|
|
|
|
0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
|
|
|
|
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45,
|
|
|
|
0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x32, 0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78,
|
|
|
|
0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
|
|
|
|
0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52,
|
|
|
|
0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a,
|
|
|
|
0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e,
|
|
|
|
0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x35,
|
|
|
|
0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
|
|
|
|
0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x6f,
|
|
|
|
0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e,
|
|
|
|
0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x36,
|
|
|
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
|
|
|
|
0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x32,
|
|
|
|
0x35, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
|
2019-01-07 18:56:57 -08:00
|
|
|
0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
|
2019-02-13 14:13:21 -08:00
|
|
|
0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74,
|
|
|
|
0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78,
|
2019-01-07 18:56:57 -08:00
|
|
|
0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
|
2019-02-13 14:13:21 -08:00
|
|
|
0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e,
|
|
|
|
0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74,
|
|
|
|
0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
|
2019-01-07 18:56:57 -08:00
|
|
|
0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
|
2019-02-13 14:13:21 -08:00
|
|
|
0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
|
|
|
|
0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45,
|
|
|
|
0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73,
|
|
|
|
0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07,
|
|
|
|
0x3a, 0x02, 0x08, 0x01, 0x22, 0xb6, 0x02, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
|
|
|
0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a,
|
|
|
|
0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
|
|
|
0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x5d, 0x0a, 0x15, 0x6d,
|
|
|
|
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
|
|
|
|
0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
|
|
|
0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62,
|
|
|
|
0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65,
|
|
|
|
0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
|
|
|
|
0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x64, 0x0a, 0x19, 0x6e, 0x6f,
|
|
|
|
0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
|
|
|
|
0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65,
|
|
|
|
0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
|
|
|
|
0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
|
|
|
|
0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65, 0x73,
|
|
|
|
0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
|
|
|
|
0x32, 0x3b, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f,
|
|
|
|
0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18,
|
|
|
|
0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74,
|
|
|
|
0x65, 0x64, 0x52, 0x09, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a,
|
|
|
|
0x0e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a,
|
|
|
|
0x08, 0x08, 0x04, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x46, 0x61,
|
|
|
|
0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65,
|
|
|
|
0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72,
|
|
|
|
0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
|
|
|
|
0x72, 0x69, 0x6e, 0x67, 0x32, 0x65, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
|
|
|
|
0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x2e,
|
|
|
|
0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
|
|
|
|
0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46,
|
|
|
|
0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
|
|
|
|
0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
|
|
|
|
0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x07, 0x0a, 0x0a,
|
|
|
|
0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70,
|
|
|
|
0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
|
|
|
|
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42,
|
|
|
|
0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f,
|
|
|
|
0x6c, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02,
|
|
|
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
|
|
|
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75,
|
|
|
|
0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x38, 0x0a, 0x09, 0x6f,
|
|
|
|
0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
|
|
|
|
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
|
|
|
0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74,
|
|
|
|
0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e,
|
|
|
|
0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
|
|
|
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74,
|
|
|
|
0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74,
|
|
|
|
0x33, 0x32, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
|
|
|
|
0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
|
|
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56,
|
|
|
|
0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
|
|
|
|
0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01,
|
|
|
|
0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
|
|
|
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
|
|
|
|
0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
|
|
|
|
0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
|
|
|
|
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
|
|
|
0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74,
|
|
|
|
0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74,
|
|
|
|
0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f,
|
|
|
|
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72,
|
|
|
|
0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72,
|
|
|
|
0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
|
|
|
|
0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
|
|
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61,
|
|
|
|
0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a,
|
|
|
|
0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20,
|
|
|
|
0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
|
|
|
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b,
|
|
|
|
0x6f, 0x70, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6f,
|
|
|
|
0x70, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x15, 0x20, 0x01,
|
|
|
|
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
|
|
|
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c,
|
|
|
|
0x6f, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x0a,
|
|
|
|
0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b,
|
|
|
|
0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
|
|
|
0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
|
|
|
|
0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74,
|
|
|
|
0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
|
|
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
|
|
|
|
0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x6f,
|
|
|
|
0x70, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
|
|
|
|
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
|
|
|
0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
|
|
|
|
0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1e, 0x20,
|
|
|
|
0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
|
|
|
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f, 0x70, 0x74,
|
|
|
|
0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61, 0x6e, 0x79,
|
|
|
|
0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
|
|
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x6f, 0x70,
|
|
|
|
0x74, 0x41, 0x6e, 0x79, 0x2a, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03,
|
|
|
|
0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07,
|
|
|
|
0x0a, 0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x3a, 0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65,
|
|
|
|
0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78,
|
|
|
|
0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
|
|
|
|
0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x35, 0x0a, 0x0e, 0x6f, 0x70,
|
|
|
|
0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70,
|
|
|
|
0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20,
|
|
|
|
0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e,
|
|
|
|
0x67, 0x3a, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75,
|
2019-01-07 18:56:57 -08:00
|
|
|
0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
|
2019-02-13 14:13:21 -08:00
|
|
|
0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
|
|
|
|
0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
|
|
|
|
0x42, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
|
2019-01-07 18:56:57 -08:00
|
|
|
0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
|
2019-02-13 14:13:21 -08:00
|
|
|
0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
|
|
|
|
0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73,
|
|
|
|
0x74, 0x65, 0x64, 0x3a, 0x37, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66,
|
|
|
|
0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
|
|
|
|
0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72,
|
|
|
|
0x70, 0x74, 0x45, 0x78, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x3c, 0x0a, 0x0c,
|
|
|
|
0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70,
|
|
|
|
0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20,
|
|
|
|
0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a,
|
|
|
|
0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x42, 0x0a, 0x0e, 0x72, 0x70,
|
|
|
|
0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70,
|
|
|
|
0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20,
|
|
|
|
0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
|
|
|
|
0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x61,
|
|
|
|
0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
|
|
|
|
0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65,
|
|
|
|
0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
|
|
|
|
0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
|
|
|
0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65,
|
2019-01-07 18:56:57 -08:00
|
|
|
0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
|
2019-02-13 14:13:21 -08:00
|
|
|
0x6e, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
|
|
|
|
0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
|
|
|
|
0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74,
|
|
|
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32,
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
}
|
|
|
|
|
2019-02-13 14:13:21 -08:00
|
|
|
var fileDescriptor_72e37deb177b50f8_gzipped = func() []byte {
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
bb := new(bytes.Buffer)
|
|
|
|
zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
|
2019-02-13 14:13:21 -08:00
|
|
|
zw.Write(fileDescriptor_72e37deb177b50f8)
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
zw.Close()
|
|
|
|
return bb.Bytes()
|
|
|
|
}()
|
2018-12-13 14:19:50 -08:00
|
|
|
|
|
|
|
const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
|
|
|
|
|
2019-01-09 21:31:15 -08:00
|
|
|
var Test_protoFile protoreflect.FileDescriptor
|
2018-12-13 14:19:50 -08:00
|
|
|
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
|
2019-02-13 14:13:21 -08:00
|
|
|
var xxx_Test_protoFile_messageTypes [20]protoimpl.MessageType
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
var xxx_Test_protoFile_goTypes = []interface{}{
|
|
|
|
(Enum)(0), // 0: pb2.Enum
|
|
|
|
(Enums_NestedEnum)(0), // 1: pb2.Enums.NestedEnum
|
|
|
|
(*Scalars)(nil), // 2: pb2.Scalars
|
2019-02-13 14:13:21 -08:00
|
|
|
(*Enums)(nil), // 3: pb2.Enums
|
|
|
|
(*Repeats)(nil), // 4: pb2.Repeats
|
|
|
|
(*Nested)(nil), // 5: pb2.Nested
|
|
|
|
(*Nests)(nil), // 6: pb2.Nests
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
(*Requireds)(nil), // 7: pb2.Requireds
|
|
|
|
(*PartialRequired)(nil), // 8: pb2.PartialRequired
|
2019-02-13 14:13:21 -08:00
|
|
|
(*NestedWithRequired)(nil), // 9: pb2.NestedWithRequired
|
|
|
|
(*IndirectRequired)(nil), // 10: pb2.IndirectRequired
|
|
|
|
(*Extensions)(nil), // 11: pb2.Extensions
|
|
|
|
(*ExtensionsContainer)(nil), // 12: pb2.ExtensionsContainer
|
|
|
|
(*MessageSet)(nil), // 13: pb2.MessageSet
|
|
|
|
(*MessageSetExtension)(nil), // 14: pb2.MessageSetExtension
|
|
|
|
(*FakeMessageSet)(nil), // 15: pb2.FakeMessageSet
|
|
|
|
(*FakeMessageSetExtension)(nil), // 16: pb2.FakeMessageSetExtension
|
|
|
|
(*KnownTypes)(nil), // 17: pb2.KnownTypes
|
|
|
|
(*Nests_OptGroup)(nil), // 18: pb2.Nests.OptGroup
|
|
|
|
(*Nests_RptGroup)(nil), // 19: pb2.Nests.RptGroup
|
|
|
|
(*Nests_OptGroup_OptNestedGroup)(nil), // 20: pb2.Nests.OptGroup.OptNestedGroup
|
|
|
|
nil, // 21: pb2.IndirectRequired.StrToNestedEntry
|
|
|
|
(*wrappers.BoolValue)(nil), // 22: google.protobuf.BoolValue
|
|
|
|
(*wrappers.Int32Value)(nil), // 23: google.protobuf.Int32Value
|
|
|
|
(*wrappers.Int64Value)(nil), // 24: google.protobuf.Int64Value
|
|
|
|
(*wrappers.UInt32Value)(nil), // 25: google.protobuf.UInt32Value
|
|
|
|
(*wrappers.UInt64Value)(nil), // 26: google.protobuf.UInt64Value
|
|
|
|
(*wrappers.FloatValue)(nil), // 27: google.protobuf.FloatValue
|
|
|
|
(*wrappers.DoubleValue)(nil), // 28: google.protobuf.DoubleValue
|
|
|
|
(*wrappers.StringValue)(nil), // 29: google.protobuf.StringValue
|
|
|
|
(*wrappers.BytesValue)(nil), // 30: google.protobuf.BytesValue
|
|
|
|
(*duration.Duration)(nil), // 31: google.protobuf.Duration
|
|
|
|
(*timestamp.Timestamp)(nil), // 32: google.protobuf.Timestamp
|
|
|
|
(*_struct.Struct)(nil), // 33: google.protobuf.Struct
|
|
|
|
(*_struct.ListValue)(nil), // 34: google.protobuf.ListValue
|
|
|
|
(*_struct.Value)(nil), // 35: google.protobuf.Value
|
|
|
|
(*empty.Empty)(nil), // 36: google.protobuf.Empty
|
|
|
|
(*any.Any)(nil), // 37: google.protobuf.Any
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
}
|
|
|
|
var xxx_Test_protoFile_depIdxs = []int32{
|
2019-02-13 14:13:21 -08:00
|
|
|
11, // pb2.opt_ext_bool:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.opt_ext_string:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.opt_ext_enum:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.opt_ext_nested:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.rpt_ext_fixed32:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.rpt_ext_enum:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.rpt_ext_nested:extendee -> pb2.Extensions
|
|
|
|
13, // pb2.message_set_extension:extendee -> pb2.MessageSet
|
|
|
|
11, // pb2.ExtensionsContainer.opt_ext_bool:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.ExtensionsContainer.opt_ext_string:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.ExtensionsContainer.opt_ext_enum:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.ExtensionsContainer.opt_ext_nested:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.ExtensionsContainer.rpt_ext_string:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.ExtensionsContainer.rpt_ext_enum:extendee -> pb2.Extensions
|
|
|
|
11, // pb2.ExtensionsContainer.rpt_ext_nested:extendee -> pb2.Extensions
|
|
|
|
13, // pb2.MessageSetExtension.message_set_extension:extendee -> pb2.MessageSet
|
|
|
|
13, // pb2.MessageSetExtension.not_message_set_extension:extendee -> pb2.MessageSet
|
|
|
|
13, // pb2.MessageSetExtension.ext_nested:extendee -> pb2.MessageSet
|
|
|
|
15, // pb2.FakeMessageSetExtension.message_set_extension:extendee -> pb2.FakeMessageSet
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
0, // pb2.Enums.opt_enum:type_name -> pb2.Enum
|
|
|
|
0, // pb2.Enums.rpt_enum:type_name -> pb2.Enum
|
|
|
|
1, // pb2.Enums.opt_nested_enum:type_name -> pb2.Enums.NestedEnum
|
|
|
|
1, // pb2.Enums.rpt_nested_enum:type_name -> pb2.Enums.NestedEnum
|
2019-02-13 14:13:21 -08:00
|
|
|
5, // pb2.Nested.opt_nested:type_name -> pb2.Nested
|
|
|
|
5, // pb2.Nests.opt_nested:type_name -> pb2.Nested
|
|
|
|
18, // pb2.Nests.optgroup:type_name -> pb2.Nests.OptGroup
|
|
|
|
5, // pb2.Nests.rpt_nested:type_name -> pb2.Nested
|
|
|
|
19, // pb2.Nests.rptgroup:type_name -> pb2.Nests.RptGroup
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
0, // pb2.Requireds.req_enum:type_name -> pb2.Enum
|
2019-02-13 14:13:21 -08:00
|
|
|
5, // pb2.Requireds.req_nested:type_name -> pb2.Nested
|
|
|
|
9, // pb2.IndirectRequired.opt_nested:type_name -> pb2.NestedWithRequired
|
|
|
|
9, // pb2.IndirectRequired.rpt_nested:type_name -> pb2.NestedWithRequired
|
|
|
|
21, // pb2.IndirectRequired.str_to_nested:type_name -> pb2.IndirectRequired.StrToNestedEntry
|
|
|
|
9, // pb2.IndirectRequired.oneof_nested:type_name -> pb2.NestedWithRequired
|
|
|
|
22, // pb2.KnownTypes.opt_bool:type_name -> google.protobuf.BoolValue
|
|
|
|
23, // pb2.KnownTypes.opt_int32:type_name -> google.protobuf.Int32Value
|
|
|
|
24, // pb2.KnownTypes.opt_int64:type_name -> google.protobuf.Int64Value
|
|
|
|
25, // pb2.KnownTypes.opt_uint32:type_name -> google.protobuf.UInt32Value
|
|
|
|
26, // pb2.KnownTypes.opt_uint64:type_name -> google.protobuf.UInt64Value
|
|
|
|
27, // pb2.KnownTypes.opt_float:type_name -> google.protobuf.FloatValue
|
|
|
|
28, // pb2.KnownTypes.opt_double:type_name -> google.protobuf.DoubleValue
|
|
|
|
29, // pb2.KnownTypes.opt_string:type_name -> google.protobuf.StringValue
|
|
|
|
30, // pb2.KnownTypes.opt_bytes:type_name -> google.protobuf.BytesValue
|
|
|
|
31, // pb2.KnownTypes.opt_duration:type_name -> google.protobuf.Duration
|
|
|
|
32, // pb2.KnownTypes.opt_timestamp:type_name -> google.protobuf.Timestamp
|
|
|
|
33, // pb2.KnownTypes.opt_struct:type_name -> google.protobuf.Struct
|
|
|
|
34, // pb2.KnownTypes.opt_list:type_name -> google.protobuf.ListValue
|
|
|
|
35, // pb2.KnownTypes.opt_value:type_name -> google.protobuf.Value
|
|
|
|
36, // pb2.KnownTypes.opt_empty:type_name -> google.protobuf.Empty
|
|
|
|
37, // pb2.KnownTypes.opt_any:type_name -> google.protobuf.Any
|
|
|
|
5, // pb2.Nests.OptGroup.opt_nested:type_name -> pb2.Nested
|
|
|
|
20, // pb2.Nests.OptGroup.optnestedgroup:type_name -> pb2.Nests.OptGroup.OptNestedGroup
|
|
|
|
9, // pb2.IndirectRequired.StrToNestedEntry.value:type_name -> pb2.NestedWithRequired
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
0, // pb2.opt_ext_enum:type_name -> pb2.Enum
|
2019-02-13 14:13:21 -08:00
|
|
|
5, // pb2.opt_ext_nested:type_name -> pb2.Nested
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
0, // pb2.rpt_ext_enum:type_name -> pb2.Enum
|
2019-02-13 14:13:21 -08:00
|
|
|
5, // pb2.rpt_ext_nested:type_name -> pb2.Nested
|
|
|
|
16, // pb2.message_set_extension:type_name -> pb2.FakeMessageSetExtension
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
0, // pb2.ExtensionsContainer.opt_ext_enum:type_name -> pb2.Enum
|
2019-02-13 14:13:21 -08:00
|
|
|
5, // pb2.ExtensionsContainer.opt_ext_nested:type_name -> pb2.Nested
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
0, // pb2.ExtensionsContainer.rpt_ext_enum:type_name -> pb2.Enum
|
2019-02-13 14:13:21 -08:00
|
|
|
5, // pb2.ExtensionsContainer.rpt_ext_nested:type_name -> pb2.Nested
|
|
|
|
14, // pb2.MessageSetExtension.message_set_extension:type_name -> pb2.MessageSetExtension
|
|
|
|
14, // pb2.MessageSetExtension.not_message_set_extension:type_name -> pb2.MessageSetExtension
|
|
|
|
5, // pb2.MessageSetExtension.ext_nested:type_name -> pb2.Nested
|
|
|
|
16, // pb2.FakeMessageSetExtension.message_set_extension:type_name -> pb2.FakeMessageSetExtension
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
2019-02-13 14:13:21 -08:00
|
|
|
var messageTypes [20]protoreflect.MessageType
|
2019-01-07 18:56:57 -08:00
|
|
|
var extensionTypes [19]protoreflect.ExtensionType
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
Test_protoFile = protoimpl.FileBuilder{
|
2019-02-13 14:13:21 -08:00
|
|
|
RawDescriptor: fileDescriptor_72e37deb177b50f8,
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
GoTypes: xxx_Test_protoFile_goTypes,
|
|
|
|
DependencyIndexes: xxx_Test_protoFile_depIdxs,
|
|
|
|
EnumOutputTypes: xxx_Test_protoFile_enumTypes[:],
|
|
|
|
MessageOutputTypes: messageTypes[:],
|
|
|
|
ExtensionOutputTypes: extensionTypes[:],
|
|
|
|
}.Init()
|
2019-02-13 14:13:21 -08:00
|
|
|
messageGoTypes := xxx_Test_protoFile_goTypes[2:][:20]
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
for i, mt := range messageTypes[:] {
|
|
|
|
xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
|
|
|
|
xxx_Test_protoFile_messageTypes[i].PBType = mt
|
|
|
|
}
|
|
|
|
E_OptExtBool.Type = extensionTypes[0]
|
|
|
|
E_OptExtString.Type = extensionTypes[1]
|
|
|
|
E_OptExtEnum.Type = extensionTypes[2]
|
|
|
|
E_OptExtNested.Type = extensionTypes[3]
|
|
|
|
E_RptExtFixed32.Type = extensionTypes[4]
|
|
|
|
E_RptExtEnum.Type = extensionTypes[5]
|
|
|
|
E_RptExtNested.Type = extensionTypes[6]
|
2019-01-07 18:56:57 -08:00
|
|
|
E_MessageSetExtension.Type = extensionTypes[7]
|
|
|
|
E_ExtensionsContainer_OptExtBool.Type = extensionTypes[8]
|
|
|
|
E_ExtensionsContainer_OptExtString.Type = extensionTypes[9]
|
|
|
|
E_ExtensionsContainer_OptExtEnum.Type = extensionTypes[10]
|
|
|
|
E_ExtensionsContainer_OptExtNested.Type = extensionTypes[11]
|
|
|
|
E_ExtensionsContainer_RptExtString.Type = extensionTypes[12]
|
|
|
|
E_ExtensionsContainer_RptExtEnum.Type = extensionTypes[13]
|
|
|
|
E_ExtensionsContainer_RptExtNested.Type = extensionTypes[14]
|
|
|
|
E_MessageSetExtension_MessageSetExtension.Type = extensionTypes[15]
|
|
|
|
E_MessageSetExtension_NotMessageSetExtension.Type = extensionTypes[16]
|
|
|
|
E_MessageSetExtension_ExtNested.Type = extensionTypes[17]
|
|
|
|
E_FakeMessageSetExtension_MessageSetExtension.Type = extensionTypes[18]
|
internal/fileinit: generate reflect data structures from raw descriptors
This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.
The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.
At a high-level, the new implementation lives in internal/fileinit.
Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
* Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
* Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
* We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
* We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
* The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.
At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.
Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-01-18 09:32:24 -08:00
|
|
|
xxx_Test_protoFile_goTypes = nil
|
|
|
|
xxx_Test_protoFile_depIdxs = nil
|
2018-12-13 14:19:50 -08:00
|
|
|
}
|