Documentation
¶
Index ¶
- Constants
- Variables
- type Iterator
- func (b *Iterator) Bool() (bool, error)
- func (i *Iterator) Count(wireType int) (count int)
- func (b *Iterator) Double() (float64, error)
- func (i *Iterator) FieldNumber() int
- func (b *Iterator) Fixed32() (uint32, error)
- func (b *Iterator) Fixed64() (uint64, error)
- func (b *Iterator) Float() (float32, error)
- func (i *Iterator) HasNext() bool
- func (b *Iterator) Int32() (int32, error)
- func (b *Iterator) Int64() (int64, error)
- func (b *Iterator) Sfixed32() (int32, error)
- func (b *Iterator) Sfixed64() (int64, error)
- func (b *Iterator) Sint32() (int32, error)
- func (b *Iterator) Sint64() (int64, error)
- func (i *Iterator) Skip(wireType int, count int)
- func (b *Iterator) Uint32() (v uint32, err error)
- func (b *Iterator) Uint64() (v uint64, err error)
- func (b *Iterator) Varint32() (v uint32, err error)
- func (b *Iterator) Varint64() (v uint64, err error)
- type Message
- func (b *Message) Bool() (bool, error)
- func (m *Message) Bytes() ([]byte, error)
- func (b *Message) Double() (float64, error)
- func (m *Message) Error() error
- func (m *Message) FieldNumber() int
- func (b *Message) Fixed32() (uint32, error)
- func (b *Message) Fixed64() (uint64, error)
- func (b *Message) Float() (float32, error)
- func (b *Message) Int32() (int32, error)
- func (b *Message) Int64() (int64, error)
- func (m *Message) Iterator(iter *Iterator) (*Iterator, error)
- func (m *Message) Message(msg *Message) (*Message, error)
- func (m *Message) MessageData() ([]byte, error)
- func (m *Message) Next() bool
- func (m *Message) RepeatedBool(buf []bool) ([]bool, error)
- func (m *Message) RepeatedDouble(buf []float64) ([]float64, error)
- func (m *Message) RepeatedFixed32(buf []uint32) ([]uint32, error)
- func (m *Message) RepeatedFixed64(buf []uint64) ([]uint64, error)
- func (m *Message) RepeatedFloat(buf []float32) ([]float32, error)
- func (m *Message) RepeatedInt32(buf []int32) ([]int32, error)
- func (m *Message) RepeatedInt64(buf []int64) ([]int64, error)
- func (m *Message) RepeatedSfixed32(buf []int32) ([]int32, error)
- func (m *Message) RepeatedSfixed64(buf []int64) ([]int64, error)
- func (m *Message) RepeatedSint32(buf []int32) ([]int32, error)
- func (m *Message) RepeatedSint64(buf []int64) ([]int64, error)
- func (m *Message) RepeatedUint32(buf []uint32) ([]uint32, error)
- func (m *Message) RepeatedUint64(buf []uint64) ([]uint64, error)
- func (m *Message) Reset(newData []byte)
- func (b *Message) Sfixed32() (int32, error)
- func (b *Message) Sfixed64() (int64, error)
- func (b *Message) Sint32() (int32, error)
- func (b *Message) Sint64() (int64, error)
- func (m *Message) Skip()
- func (m *Message) String() (string, error)
- func (b *Message) Uint32() (v uint32, err error)
- func (b *Message) Uint64() (v uint64, err error)
- func (b *Message) Varint32() (v uint32, err error)
- func (b *Message) Varint64() (v uint64, err error)
- func (m *Message) WireType() int
Constants ¶
const ( // WireType describes the encoding method for the next value in the stream. WireTypeVarint = 0 WireType64bit = 1 WireTypeLengthDelimited = 2 WireTypeStartGroup = 3 // deprecated by protobuf, not supported WireTypeEndGroup = 4 // deprecated by protobuf, not supported WireType32bit = 5 )
Variables ¶
var ( // ErrIntOverflow is returned when scanning a varint-encoded integer, // the value is found to be too long for the integer type. ErrIntOverflow = errors.New("protoscan: integer overflow") // ErrInvalidLength is returned when the length is not valid, // usually as a result of an invalid type scan. ErrInvalidLength = errors.New("protoscan: invalid length") )
Functions ¶
This section is empty.
Types ¶
type Iterator ¶
type Iterator struct {
// contains filtered or unexported fields
}
Iterator allows for moving across a packed repeated field in a 'controlled' fashion.
func (*Iterator) Bool ¶
Bool is encoded as 0x01 or 0x00 plus the field+type prefix byte. 2 bytes total.
func (*Iterator) Count ¶
Count returns the total number of values in the given repeating field. The answer depends on the type/encoding or the field: double, float, fixed, sfixed are WireType32bit or WireType64bit, all other types (int, uint, sint) are WireTypeVarint. Any other value will cause the function to panic.
func (*Iterator) Double ¶
Double values are encoded as a fixed length of 8 bytes in their IEEE-754 format.
func (*Iterator) FieldNumber ¶
FieldNumber returns the number for the current repeated field. These numbers are defined in the protobuf definition file used to encode the message.
func (*Iterator) Fixed32 ¶
Fixed32 reads a fixed 4 byte value as a uint32. This proto type is more efficient than uint32 if values are often greater than 2^28.
func (*Iterator) Fixed64 ¶
Fixed64 reads a fixed 8 byte value as an uint64. This proto type is more efficient than uint64 if values are often greater than 2^56.
func (*Iterator) Float ¶
Float values are encoded as a fixed length of 4 bytes in their IEEE-754 format.
func (*Iterator) HasNext ¶
HasNext is used in a 'for' loop to read through all the elements. Returns false when all the items have been read. This method does NOT need to be called, reading a value automatically moves in the index forward. This behavior is different than Message.Next().
func (*Iterator) Int32 ¶
Int32 reads a variable-length encoding of up to 4 bytes. This field type is best used if the field only has positive numbers, otherwise use sint32. Note, this field can also by read as an Int64.
func (*Iterator) Int64 ¶
Int64 reads a variable-length encoding of up to 8 bytes. This field type is best used if the field only has positive numbers, otherwise use sint64.
func (*Iterator) Sint32 ¶
Sint32 uses variable-length encoding with zig-zag encoding for signed values. This field type more efficiently encodes negative numbers than regular int32s.
func (*Iterator) Sint64 ¶
Sint64 uses variable-length encoding with zig-zag encoding for signed values. This field type more efficiently encodes negative numbers than regular int64s.
func (*Iterator) Skip ¶
Skip will move the interator forward 'count' value without actually reading it. For a new iterator, 'count' will move the pointer so that the next value call will be the 'counth' value. The correct wireType must be specified: double, float, fixed, sfixed are WireType32bit or WireType64bit, all other types (int, uint, sint) are WireTypeVarint. Any other value will cause the function to panic.
type Message ¶
type Message struct {
// contains filtered or unexported fields
}
Message is a container for a protobuf message type ready to be scanned.
func (*Message) Bool ¶
Bool is encoded as 0x01 or 0x00 plus the field+type prefix byte. 2 bytes total.
func (*Message) Double ¶
Double values are encoded as a fixed length of 8 bytes in their IEEE-754 format.
func (*Message) Error ¶
Error will return any errors that were encountered during scanning. Errors could be due to reading the incorrect types or forgetting to skip and unused value.
func (*Message) FieldNumber ¶
FieldNumber returns the number for the current value being scanned. These numbers are defined in the protobuf definition file used to encode the message.
func (*Message) Fixed32 ¶
Fixed32 reads a fixed 4 byte value as a uint32. This proto type is more efficient than uint32 if values are often greater than 2^28.
func (*Message) Fixed64 ¶
Fixed64 reads a fixed 8 byte value as an uint64. This proto type is more efficient than uint64 if values are often greater than 2^56.
func (*Message) Float ¶
Float values are encoded as a fixed length of 4 bytes in their IEEE-754 format.
func (*Message) Int32 ¶
Int32 reads a variable-length encoding of up to 4 bytes. This field type is best used if the field only has positive numbers, otherwise use sint32. Note, this field can also by read as an Int64.
func (*Message) Int64 ¶
Int64 reads a variable-length encoding of up to 8 bytes. This field type is best used if the field only has positive numbers, otherwise use sint64.
func (*Message) Iterator ¶
Iterator will use the current field. Field must be a packed repeated field.
func (*Message) Message ¶
Message will return a pointer to an embedded message that can then be scanned in kind of a recursive fashion. Will reuse the provided Message object if provided.
func (*Message) MessageData ¶
MessageData returns the encoded data a message. This data can then be decoded using conventional tools.
func (*Message) RepeatedBool ¶
RepeatedBool will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedDouble ¶
RepeatedDouble will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedFixed32 ¶
RepeatedFixed32 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedFixed64 ¶
RepeatedFixed64 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedFloat ¶
RepeatedFloat will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedInt32 ¶
RepeatedInt32 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedInt64 ¶
RepeatedInt64 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedSfixed32 ¶
RepeatedSfixed32 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedSfixed64 ¶
RepeatedSfixed64 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedSint32 ¶
RepeatedSint32 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedSint64 ¶
RepeatedSint64 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedUint32 ¶
RepeatedUint32 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) RepeatedUint64 ¶
RepeatedUint64 will append the repeated value(s) to the buffer. This method supports packed or unpacked encoding.
func (*Message) Reset ¶
Reset will set the index to 0 so the message can be read again. Optionally pass in new data to reuse the Message object.
func (*Message) Sint32 ¶
Sint32 uses variable-length encoding with zig-zag encoding for signed values. This field type more efficiently encodes negative numbers than regular int32s.
func (*Message) Sint64 ¶
Sint64 uses variable-length encoding with zig-zag encoding for signed values. This field type more efficiently encodes negative numbers than regular int64s.
func (*Message) Skip ¶
func (m *Message) Skip()
Skip will move the scanner past the current value if it is not needed. If a value is not parsed this method must be called to move the decoder past the value.
func (*Message) String ¶
String reads a string type. This data will always contain UTF-8 encoded or 7-bit ASCII text.
func (*Message) Varint32 ¶
Varint32 reads up to 32-bits of variable-length encoded data. Note that negative int32 values could still be encoded as 64-bit varints due to their leading 1s.