Categorygithub.com/filecoin-project/go-cbor-util
modulepackage
0.0.2
Repository: https://github.com/filecoin-project/go-cbor-util.git
Documentation: pkg.go.dev

# README

go-cbor-util

CircleCI codecov

CBOR utilities for reading and writing objects to CBOR representation, optimizing for fast path serialization/deserialization generated by cbor-gen

Install

Install this library with go mod

Usage

Write an object to a stream in cbor

import (
  cborutil "github.com/filecoin-project/go-cbor-util"
  cbg "github.com/whyrusleeping/cbor-gen"
)

var w io.Writer
// some object type with cbg fastpath marshalling
var out cbg.CBORMarshaler
err := cborutil.WriteCborRPC(w, obj)

var slow interface{}
// will work but will be slower if slow does not support fast path marshalling
err := cborutil.WriteCborRPC(w, slow)

Read an object form a stream in cbor

import (
  cborutil "github.com/filecoin-project/go-cbor-util"
  cbg "github.com/whyrusleeping/cbor-gen"
)

var r io.Reader
// some object type with cbg fastpath marshalling
var out cbg.CBORUnmarshaler
err := cborutil.ReadCborRPC(r, obj)

var slow interface{}
// will work but will be slower if slow does not support fast path unmarshalling
err := cborutil.ReadCborRPC(r, slow)

Project-level documentation

The filecoin-project has a community repo that documents in more detail our policies and guidelines, such as discussion forums and chat rooms and Code of Conduct.

License

This repository is dual-licensed under Apache 2.0 and MIT terms.

Copyright 2019. Protocol Labs, Inc.

# Functions

AsIpld converts an object to an ipld.Node interface TODO: this is a bit ugly, and this package is not exactly the best place.
Dump returns the cbor bytes representation of an object.
Equals is true if two objects have the same cbor representation.
ReadCborRPC will read an object from the given io.Reader opting for fast path if possible.
WriteCborRPC with encode an object to cbor, opting for fast path if possible and then write it into the given io.Writer.

# Constants

Debug will produce more debugging messages.