Documentation ¶
Overview ¶
Package codec is an interface for encoding messages
Index ¶
Constants ¶
This section is empty.
Variables ¶
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") )
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 ¶
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
FromContext returns codec from context
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) MarshalJSON ¶ added in v3.7.4
func (*Frame) ProtoMessage ¶ added in v3.7.4
func (m *Frame) ProtoMessage()
func (*Frame) UnmarshalJSON ¶ added in v3.7.4
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 MaxMsgSize ¶ added in v3.1.0
MaxMsgSize sets the max message size
func SetOption ¶ added in v3.7.3
func SetOption(k, v interface{}) Option
SetOption returns a function to setup a context with given value
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
NewOptions returns new options