scheme

package
v0.3.0-rc.2 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2023 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SortVersions

func SortVersions(vers []string) error

Types

type Converter

type Converter[O Object] interface {
	ConvertTo(Object) (O, error)
	ConvertFrom(O) (Object, error)
}

type IdentityConverter

type IdentityConverter[O Object] struct{}

func (IdentityConverter[O]) ConvertFrom

func (c IdentityConverter[O]) ConvertFrom(o O) (Object, error)

func (IdentityConverter[O]) ConvertTo

func (c IdentityConverter[O]) ConvertTo(o Object) (O, error)

type Kind

type Kind interface {
	Kind() string
	Description() string
}

func NewKind

func NewKind(name, desc string) Kind

type KnownTypes

type KnownTypes[O Object, T Type[O]] map[string]T

type Object

type ObjectDecoder

type ObjectDecoder[O Object] interface {
	Decode(data []byte, unmarshaler runtime.Unmarshaler) (O, error)
}

ObjectDecoder is able to provide an effective typed object for some serilaized form. The technical deserialization is done by an Unmarshaler.

type ObjectEncoder

type ObjectEncoder[O Object] interface {
	Encode(O, runtime.Marshaler) ([]byte, error)
}

ObjectEncoder is able to provide a versioned representation of an effective Object.

type Scheme

type Scheme[O Object, T Type[O]] interface {
	RegisterKind(kind Kind)
	RegisterType(name string, otype T) error

	GetType(name string) T
	GetKind(kind string) Kind

	Decode(data []byte, unmarshaler runtime.Unmarshaler) (O, error)
	Encode(obj O, marshaler runtime.Marshaler) ([]byte, error)

	KnownTypes() KnownTypes[O, T]
	KnownKinds() []string
	KnownVersions(kind string) []string
}

func NewScheme

func NewScheme[O Object, T Type[O]]() Scheme[O, T]

type Type

type Type[O Object] interface {
	ObjectDecoder[O]
	ObjectEncoder[O]
}

func NewIdentityType

func NewIdentityType[O Object](proto O) Type[O]

func NewTypeByProtoType

func NewTypeByProtoType[O Object](proto Object, converter Converter[O]) Type[O]

type VersionCache

type VersionCache map[string]*semver.Version

func (VersionCache) Get

func (c VersionCache) Get(v string) (*semver.Version, error)

Jump to

Keyboard shortcuts

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