protoc-gen-go-binary

command module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jan 5, 2023 License: MIT Imports: 6 Imported by: 0

README

protoc-gen-go-binary

This is a plugin for the Google Protocol Buffers compiler protoc that generates code to implement encoding.BinaryMarshaler and encoding.BinaryUnmarshaler by just calling the Marshal and Unmarshal functions already generated for the types.

This enables Go-generated protobuf messages to be used in situations where the code already supports using the binary marshaling interfaces.

The code heavily relies on google.golang.org/protobuf/compiler/protogen and is mostly boilerplate.

Install

go get github.com/hashicorp/protoc-gen-go-binary

Also required:

Usage

Define your messages like normal:

syntax = "proto3";

message Request {
  oneof kind {
    string name = 1;
    int32  code = 2;
  }
}

The example message purposely uses a oneof since this won't work by default with encoding/json. Next, generate the code:

protoc --go_out=. --go-binary_out=. request.proto

Your output should contain a file request.pb.binary.go which contains the implementation of encoding.BinaryMarshal/BinaryUnmarshal for all your message types. You can then encode binary encode your message as protobufs.

import (
  "bytes"
  "encoding/gob"
)

var buf bytes.Buffer
encoder := gob.NewEncoder(&buf)

// Marshal
err := encoder.Encode(&Request{
  Kind: &Kind_Name{
    Name: "alice",
  },
}

// Unmarshal
var result Request
decoder := gob.NewDecoder(&buf)
err := decoder.Decode(&result)

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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