protobuf

package
v1.43.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 1, 2022 License: OSL-3.0 Imports: 6 Imported by: 0

README

ProtoBuf

I reject the idea of having to use a compiler for ProtoBuf. I think you should be able to Marshal and Unmarshal just like JSON. And really, that should be possible. If they had only added a single extra wiretype for messages, ProtoBuf would be more or less self describing. At any rate, I want a package that can decode arbitrary ProtoBuf, and can also encode some Map or Struct into ProtoBuf as well.

Why not use generic add?

If you use generic add with method interface, it would allow recurive slices. We could solve this by also adding type interface, but its probably simpler to just not use generics for this.

Why not implement a decoder?

I tried, but Unmarshal is way faster:

Benchmark_Decode-12       367295 ns/op         1481091 B/op       2588 allocs/op
Benchmark_Unmarshal-12     86033 ns/op           80245 B/op       1104 allocs/op

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bytes added in v1.31.0

type Bytes []byte

type Encoder added in v1.37.5

type Encoder interface {
	// contains filtered or unexported methods
}

type Fixed32 added in v1.27.7

type Fixed32 uint32

type Fixed64 added in v1.27.7

type Fixed64 uint64

type Message

type Message map[Number]Encoder

func Unmarshal

func Unmarshal(buf []byte) (Message, error)

func (Message) Add added in v1.17.8

func (m Message) Add(num Number, value Message) error

func (Message) Add_Fixed32 added in v1.39.5

func (m Message) Add_Fixed32(num Number, value uint32) error

func (Message) Add_Fixed64 added in v1.39.5

func (m Message) Add_Fixed64(num Number, value uint64) error

func (Message) Add_String added in v1.38.9

func (m Message) Add_String(num Number, value string) error

func (Message) Add_Varint added in v1.39.5

func (m Message) Add_Varint(num Number, value uint64) error

func (Message) Get

func (m Message) Get(num Number) Message

func (Message) Get_Bytes added in v1.38.9

func (m Message) Get_Bytes(num Number) ([]byte, error)

func (Message) Get_Fixed64 added in v1.38.9

func (m Message) Get_Fixed64(num Number) (uint64, error)

func (Message) Get_Messages added in v1.38.9

func (m Message) Get_Messages(num Number) []Message

func (Message) Get_String added in v1.38.9

func (m Message) Get_String(num Number) (string, error)

func (Message) Get_Varint added in v1.38.9

func (m Message) Get_Varint(num Number) (uint64, error)

func (Message) Marshal

func (m Message) Marshal() []byte

type Number added in v1.22.3

type Number = protowire.Number

type Raw added in v1.35.4

type Raw struct {
	Bytes   []byte
	String  string
	Message map[Number]Encoder
}

type Slice added in v1.39.4

type Slice[T Encoder] []T

type String added in v1.27.5

type String string

type Varint added in v1.27.7

type Varint uint64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL