vendor: github.com/containerd/typeurl v1.0.2

full diff: https://github.com/containerd/typeurl/compare/v1.0.1...v1.0.2

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2021-06-21 12:41:23 +02:00
parent 3ea82da319
commit c451d82af9
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C
4 changed files with 28 additions and 8 deletions

View File

@ -6,7 +6,7 @@ github.com/containerd/cgroups b9de8a2212026c07cec67baf3323
github.com/containerd/console 2f1e3d2b6afd18e8b2077816c711205a0b4d8769 # v1.0.2 github.com/containerd/console 2f1e3d2b6afd18e8b2077816c711205a0b4d8769 # v1.0.2
github.com/containerd/containerd 0edc412565dcc6e3d6125ff9e4b009ad4b89c638 # master (v1.5.0-dev) github.com/containerd/containerd 0edc412565dcc6e3d6125ff9e4b009ad4b89c638 # master (v1.5.0-dev)
github.com/containerd/continuity bce1c3f9669b6f3e7f6656ee715b0b4d75fa64a6 # v0.1.0 github.com/containerd/continuity bce1c3f9669b6f3e7f6656ee715b0b4d75fa64a6 # v0.1.0
github.com/containerd/typeurl cd3ce7159eae562a4f60ceff37dada11a939d247 # v1.0.1 github.com/containerd/typeurl 5e43fb8b75ed2f2305fc04e6918c8d10636771bc # v1.0.2
github.com/coreos/etcd d57e8b8d97adfc4a6c224fe116714bf1a1f3beb9 # v3.3.12 github.com/coreos/etcd d57e8b8d97adfc4a6c224fe116714bf1a1f3beb9 # v3.3.12
github.com/cpuguy83/go-md2man/v2 f79a8a8ca69da163eee19ab442bedad7a35bba5a # v2.0.0 github.com/cpuguy83/go-md2man/v2 f79a8a8ca69da163eee19ab442bedad7a35bba5a # v2.0.0
github.com/creack/pty 2a38352e8b4d7ab6c336eef107e42a55e72e7fbc # v1.1.11 github.com/creack/pty 2a38352e8b4d7ab6c336eef107e42a55e72e7fbc # v1.1.11

View File

@ -1,8 +1,9 @@
# typeurl # typeurl
[![Build Status](https://travis-ci.org/containerd/typeurl.svg?branch=master)](https://travis-ci.org/containerd/typeurl) [![PkgGoDev](https://pkg.go.dev/badge/github.com/containerd/typeurl)](https://pkg.go.dev/github.com/containerd/typeurl)
[![Build Status](https://github.com/containerd/typeurl/workflows/CI/badge.svg)](https://github.com/containerd/typeurl/actions?query=workflow%3ACI)
[![codecov](https://codecov.io/gh/containerd/typeurl/branch/master/graph/badge.svg)](https://codecov.io/gh/containerd/typeurl) [![codecov](https://codecov.io/gh/containerd/typeurl/branch/master/graph/badge.svg)](https://codecov.io/gh/containerd/typeurl)
[![Go Report Card](https://goreportcard.com/badge/github.com/containerd/typeurl)](https://goreportcard.com/report/github.com/containerd/typeurl)
A Go package for managing the registration, marshaling, and unmarshaling of encoded types. A Go package for managing the registration, marshaling, and unmarshaling of encoded types.

View File

@ -3,6 +3,6 @@ module github.com/containerd/typeurl
go 1.13 go 1.13
require ( require (
github.com/gogo/protobuf v1.3.1 github.com/gogo/protobuf v1.3.2
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
) )

View File

@ -28,11 +28,20 @@ import (
) )
var ( var (
mu sync.Mutex mu sync.RWMutex
registry = make(map[reflect.Type]string) registry = make(map[reflect.Type]string)
) )
var ErrNotFound = errors.New("not found") // Definitions of common error types used throughout typeurl.
//
// These error types are used with errors.Wrap and errors.Wrapf to add context
// to an error.
//
// To detect an error class, use errors.Is() functions to tell whether an
// error is of this type.
var (
ErrNotFound = errors.New("not found")
)
// Register a type with a base URL for JSON marshaling. When the MarshalAny and // Register a type with a base URL for JSON marshaling. When the MarshalAny and
// UnmarshalAny functions are called they will treat the Any type value as JSON. // UnmarshalAny functions are called they will treat the Any type value as JSON.
@ -56,9 +65,9 @@ func Register(v interface{}, args ...string) {
// TypeURL returns the type url for a registered type. // TypeURL returns the type url for a registered type.
func TypeURL(v interface{}) (string, error) { func TypeURL(v interface{}) (string, error) {
mu.Lock() mu.RLock()
u, ok := registry[tryDereference(v)] u, ok := registry[tryDereference(v)]
mu.Unlock() mu.RUnlock()
if !ok { if !ok {
// fallback to the proto registry if it is a proto message // fallback to the proto registry if it is a proto message
pb, ok := v.(proto.Message) pb, ok := v.(proto.Message)
@ -119,14 +128,21 @@ func UnmarshalAny(any *types.Any) (interface{}, error) {
return UnmarshalByTypeURL(any.TypeUrl, any.Value) return UnmarshalByTypeURL(any.TypeUrl, any.Value)
} }
// UnmarshalByTypeURL unmarshals the given type and value to into a concrete type.
func UnmarshalByTypeURL(typeURL string, value []byte) (interface{}, error) { func UnmarshalByTypeURL(typeURL string, value []byte) (interface{}, error) {
return unmarshal(typeURL, value, nil) return unmarshal(typeURL, value, nil)
} }
// UnmarshalTo unmarshals the any type into a concrete type passed in the out
// argument. It is identical to UnmarshalAny, but lets clients provide a
// destination type through the out argument.
func UnmarshalTo(any *types.Any, out interface{}) error { func UnmarshalTo(any *types.Any, out interface{}) error {
return UnmarshalToByTypeURL(any.TypeUrl, any.Value, out) return UnmarshalToByTypeURL(any.TypeUrl, any.Value, out)
} }
// UnmarshalTo unmarshals the given type and value into a concrete type passed
// in the out argument. It is identical to UnmarshalByTypeURL, but lets clients
// provide a destination type through the out argument.
func UnmarshalToByTypeURL(typeURL string, value []byte, out interface{}) error { func UnmarshalToByTypeURL(typeURL string, value []byte, out interface{}) error {
_, err := unmarshal(typeURL, value, out) _, err := unmarshal(typeURL, value, out)
return err return err
@ -166,13 +182,16 @@ type urlType struct {
} }
func getTypeByUrl(url string) (urlType, error) { func getTypeByUrl(url string) (urlType, error) {
mu.RLock()
for t, u := range registry { for t, u := range registry {
if u == url { if u == url {
mu.RUnlock()
return urlType{ return urlType{
t: t, t: t,
}, nil }, nil
} }
} }
mu.RUnlock()
// fallback to proto registry // fallback to proto registry
t := proto.MessageType(url) t := proto.MessageType(url)
if t != nil { if t != nil {