Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrWrongMessageType = errors.New("wrong message type") ErrInvalidMessage = errors.New("invalid message") ErrRouteInfoNotFound = errors.New("route info not found in dictionary") )
Errors that could be occurred in message codec
var TypesToProto = map[Type]pbProto.PacketType{ Request: pbProto.PacketType_REQUEST, Notify: pbProto.PacketType_REQUEST, Response: pbProto.PacketType_RESPONSE, Push: pbProto.PacketType_REQUEST, Warn: pbProto.PacketType_WARNING, Error: pbProto.PacketType_ERROR, }
Functions ¶
func GetDictionary ¶
GetDictionary gets the routes map which is used to compress route.
func SetDictionary ¶
SetDictionary set routes map which be used to compress route.
Types ¶
type Message ¶
type Message struct { pbProto.Request pbProto.Response Type Type // message type ID uint32 // unique id, zero while notify mode Route string // route for locating service Data []byte // payload Err bool // is an error message // contains filtered or unexported fields }
Message represents a unmarshaled message or a message which to be marshaled
func Decode ¶
Decode unmarshal the bytes slice to a message See ref: https://github.com/topfreegames/pitaya/blob/master/docs/communication_protocol.md
type MessagesEncoder ¶
type MessagesEncoder struct {
DataCompression bool
}
MessagesEncoder implements MessageEncoder interface
func NewMessagesEncoder ¶
func NewMessagesEncoder(dataCompression bool) *MessagesEncoder
NewMessagesEncoder returns a new message encoder
func (*MessagesEncoder) Decode ¶
func (me *MessagesEncoder) Decode(data []byte) (*Message, error)
Decode decodes the message
func (*MessagesEncoder) Encode ¶
func (me *MessagesEncoder) Encode(message *Message) ([]byte, error)
Encode marshals message to binary format. Different message types is corresponding to different message header, message types is identified by 2-4 bit of flag field. The relationship between message types and message header is presented as follows: ------------------------------------------ | type | flag | other | |----------|--------|--------------------| | request |----000-|<message id>|<route>| | notify |----001-|<route> | | response |----010-|<message id> | | push |----011-|<route> | ------------------------------------------ The figure above indicates that the bit does not affect the type of message. See ref: https://github.com/topfreegames/pitaya/blob/master/docs/communication_protocol.md
func (*MessagesEncoder) IsCompressionEnabled ¶
func (me *MessagesEncoder) IsCompressionEnabled() bool
IsCompressionEnabled returns wether the compression is enabled or not