codec

package
v3.7.1 Latest Latest
Warning

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

Go to latest
Published: Sep 15, 2021 License: Apache-2.0 Imports: 7 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 int = 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

This section is empty.

Types

type Codec

type Codec interface {
	ReadHeader(io.Reader, *Message, MessageType) error
	ReadBody(io.Reader, interface{}) error
	Write(io.Writer, *Message, interface{}) error
	Marshal(interface{}) ([]byte, error)
	Unmarshal([]byte, interface{}) 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 NewCodec

func NewCodec() 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

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 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
	// 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