Documentation ¶
Index ¶
Constants ¶
View Source
const ( UnmarshalBase Action = 0x34 // 已经序列化基本信息, 但是还够不成一个完整的消息, 需要将消息提升到noReadyBuffer中 UnmarshalComplete Action = 0x45 // 序列化完整消息完成 // SingleRequest 数据在单次请求中被传完, 适合HTTP之类的协议, LMessageParser在遇到 // 这个选项时会直接之间使用ParseMsg()传入的bytes来触发Unmarshal() // TCP之类的协议使用这个选项会引发半包之类的问题 SingleRequest BaseLenType = 0x65 // MultiRequest 数据在可能在多次请求中被传完, 适合TCP之类的协议 MultiRequest BaseLenType = 0x76 )
View Source
const ( DefaultBufferSize = 4096 // 4KB MaxBufferSize = 1 << 20 // 1MB DefaultParser = "lrpc-trait" )
Variables ¶
This section is empty.
Functions ¶
func RegisterHandler ¶
func RegisterHandler(handler MessageHandler)
Types ¶
type AllocTor ¶
func NewDefaultSimpleAllocTor ¶
func NewDefaultSimpleAllocTor() AllocTor
type BaseLenType ¶
type BaseLenType int
type MessageHandler ¶
type MessageHandler interface { Header() []byte BaseLen() (BaseLenType, int) MessageLength(base []byte) int Unmarshal(data []byte, msg *message.Message) (Action, error) }
func GetHandler ¶
func GetHandler(magicNumber uint8) MessageHandler
type Parser ¶
type Parser interface { // Parse 处理数据的接口必须能够正确处理half-package // 也必须能处理有多个完整报文的数据, 在解析失败时返回对应的error Parse(data []byte) (msgs []ParserMessage, err error) // Free 用于释放Parse返回的数据, 在Parse返回error时这个过程 // 绝对不能被调用 Free(msg *message.Message) inters.Reset }
Parser 解析器的所有接口的实现必须是线程安全/goroutine safe 否则则会出现data race/race conditions
func NewLRPCTrait ¶
type ParserMessage ¶
type SimpleAllocTor ¶
type SimpleAllocTor struct {
}func (*SimpleAllocTor) AllocMessage ¶
func (s *SimpleAllocTor) AllocMessage() *message.Message
func (*SimpleAllocTor) FreeMessage ¶
func (s *SimpleAllocTor) FreeMessage(message *message.Message)
Click to show internal directories.
Click to hide internal directories.