Documentation
¶
Index ¶
- Constants
- Variables
- func AddPacketToData(data []byte, packet IPacket) ([]byte, error)
- func IsBigEndian() bool
- func IsLittleEndian() bool
- func SetEndianMode(mode endianMode)
- type Header
- type HeaderMode
- type IHeader
- type IHeaderStrategy
- type IHeaderStrategyMessageIDFirst
- type IPacket
- type Packet
- type PacketPassThrough
Constants ¶
View Source
const ( LittleEndian endianMode = 0 // 小端-模式 BigEndian endianMode = 1 // 大端-模式 )
View Source
const HeaderLengthFieldSize uint32 = 4 // 包头-总长度-字段 的 大小
View Source
const HeaderSize uint32 = 24
Variables ¶
View Source
var GEndian binary.ByteOrder
Functions ¶
func AddPacketToData ¶
AddPacketToData 将数据 packet 放到 data 中
func SetEndianMode ¶
func SetEndianMode(mode endianMode)
Types ¶
type Header ¶
type Header struct {
Length uint32 // 总包长度,包含包头+包体长度
MessageID uint32 // 命令
SessionID uint32 // 会话id
ResultID uint32 // 结果id
Key uint64
}
Header 包头
type HeaderMode ¶
type HeaderMode int
包头-模式
const ( HeaderModeLengthFirst HeaderMode = 0 // 长度在前, 长度的值,包含Length字段自身 HeaderModeMessageIDFirst HeaderMode = 1 // 消息ID在前 HeaderModeLengthFirst_WithoutLength HeaderMode = 2 // 长度在前, 长度的值,不包含Length字段自身 )
type IHeaderStrategy ¶
type IHeaderStrategy interface {
GetHeaderMode() HeaderMode // 获取包头模式
GetLengthSize() uint32 // 消息体长度 的大小
UnpackLength(buf []byte) uint32 // 解析消息体长度
UnpackMessageID(buf []byte) uint32 // 解析消息ID
}
消息头策略
type IHeaderStrategyMessageIDFirst ¶
type IHeaderStrategyMessageIDFirst interface {
GetLengthSizeByMessageID(messageID uint32) uint32 // 根据消息ID,获取消息体长度 的大小
GetMessageIDSize() uint32 // 消息ID 的长度
}
消息头策略-消息ID优先
type Packet ¶
type Packet struct {
Header *Header // 包头
PBMessage proto.Message // 消息
IMessage xmessage.IMessage // 记录该包对应的处理消息
}
Packet 数据包
func (*Packet) WithHeader ¶
type PacketPassThrough ¶
PacketPassThrough 透传数据包
func NewPacketPassThrough ¶
func NewPacketPassThrough() *PacketPassThrough
NewPacketPassThrough 新建-透传数据包
func (*PacketPassThrough) Marshal ¶
func (p *PacketPassThrough) Marshal() (data []byte, err error)
func (*PacketPassThrough) WithHeader ¶
func (p *PacketPassThrough) WithHeader(header *Header) *PacketPassThrough
Click to show internal directories.
Click to hide internal directories.