codec

package
v3.7.8 Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2021 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package codec is an interface for encoding messages

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalidMessage returned when invalid messge passed to codec
	ErrInvalidMessage = errors.New("invalid message")
	// ErrUnknownContentType returned when content-type is unknown
	ErrUnknownContentType = errors.New("unknown content-type")
)
View Source
var (
	// DefaultMaxMsgSize specifies how much data codec can handle
	DefaultMaxMsgSize = 1024 * 1024 * 4 // 4Mb
	// DefaultCodec is the global default codec
	DefaultCodec Codec = NewCodec()
	// DefaultTagName specifies struct tag name to control codec Marshal/Unmarshal
	DefaultTagName = "codec"
)

Functions

func MarshalAppend added in v3.7.8

func MarshalAppend(buf []byte, c Codec, v interface{}, opts ...Option) ([]byte, error)

MarshalAppend calls codec.Marshal(v) and returns the data appended to buf. If codec implements MarshalAppend, that is called instead.

func NewContext added in v3.7.3

func NewContext(ctx context.Context, c Codec) context.Context

NewContext put codec in context

Types

type Codec

type Codec interface {
	ReadHeader(r io.Reader, m *Message, mt MessageType) error
	ReadBody(r io.Reader, v interface{}) error
	Write(w io.Writer, m *Message, v interface{}) error
	Marshal(v interface{}, opts ...Option) ([]byte, error)
	Unmarshal(b []byte, v interface{}, opts ...Option) error
	String() string
}

Codec encodes/decodes various types of messages used within micro. ReadHeader and ReadBody are called in pairs to read requests/responses from the connection. Close is called when finished with the connection. ReadBody may be called with a nil argument to force the body to be read and discarded.

func FromContext added in v3.7.3

func FromContext(ctx context.Context) (Codec, bool)

FromContext returns codec from context

func NewCodec

func NewCodec(opts ...Option) Codec

NewCodec returns new noop codec

type Frame added in v3.1.0

type Frame struct {
	Data []byte
}

Frame gives us the ability to define raw data to send over the pipes

func (*Frame) Marshal added in v3.7.4

func (m *Frame) Marshal() ([]byte, error)

func (*Frame) MarshalJSON added in v3.7.4

func (m *Frame) MarshalJSON() ([]byte, error)

func (*Frame) ProtoMessage added in v3.7.4

func (m *Frame) ProtoMessage()

func (*Frame) Reset added in v3.7.4

func (m *Frame) Reset()

func (*Frame) String added in v3.7.4

func (m *Frame) String() string

func (*Frame) Unmarshal added in v3.7.4

func (m *Frame) Unmarshal(data []byte) error

func (*Frame) UnmarshalJSON added in v3.7.4

func (m *Frame) UnmarshalJSON(data []byte) error

type Message

type Message struct {
	Header   metadata.Metadata
	Target   string
	Method   string
	Endpoint string
	Error    string
	ID       string
	Body     []byte
	Type     MessageType
}

Message represents detailed information about the communication, likely followed by the body. In the case of an error, body may be nil.

func NewMessage added in v3.1.0

func NewMessage(t MessageType) *Message

NewMessage creates new codec message

type MessageType

type MessageType int

MessageType specifies message type for codec

const (
	Error MessageType = iota
	Request
	Response
	Event
)

Message types

type Option added in v3.1.0

type Option func(*Options)

Option func

func Logger added in v3.1.6

func Logger(l logger.Logger) Option

Logger sets the logger

func MaxMsgSize added in v3.1.0

func MaxMsgSize(n int) Option

MaxMsgSize sets the max message size

func Meter added in v3.1.6

func Meter(m meter.Meter) Option

Meter sets the meter

func SetOption added in v3.7.3

func SetOption(k, v interface{}) Option

SetOption returns a function to setup a context with given value

func TagName added in v3.7.2

func TagName(n string) Option

TagName sets the codec tag name in struct

func Tracer added in v3.1.6

func Tracer(t tracer.Tracer) Option

Tracer to be used for tracing

type Options added in v3.1.0

type Options struct {
	// Meter used for metrics
	Meter meter.Meter
	// Logger used for logging
	Logger logger.Logger
	// Tracer used for tracing
	Tracer tracer.Tracer
	// Context stores additional codec options
	Context context.Context
	// TagName specifies tag name in struct to control codec
	TagName string
	// MaxMsgSize specifies max messages size that reads by codec
	MaxMsgSize int
}

Options contains codec options

func NewOptions added in v3.1.6

func NewOptions(opts ...Option) Options

NewOptions returns new options

Jump to

Keyboard shortcuts

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