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 ¶
func MarshalAppend ¶
MarshalAppend calls codec.Marshal(v) and returns the data appended to buf. If codec implements MarshalAppend, that is called instead.
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 ¶
FromContext returns codec from context
type Frame ¶
type Frame struct {
Data []byte
}
Frame gives us the ability to define raw data to send over the pipes
func (*Frame) MarshalJSON ¶
MarshalJSON returns frame data
func (*Frame) UnmarshalJSON ¶
UnmarshalJSON set frame data
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.
type MessageType ¶
type MessageType int
MessageType specifies message type for codec
const ( Error MessageType = iota Request Response Event )
Message types
type Option ¶
type Option func(*Options)
Option func
type Options ¶
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