| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package utils
- import (
- "sync/atomic"
- )
- type ConnectContext struct {
- UUID string
- SN string
- XlogPackageParser *XlogPackageParser
- SendBuffer atomic.Value
- DoneChan chan string // 用来回传结果的 channel
- }
- // Site基本信息
- type XlogSiteBaseInfo struct {
- SN [48]byte
- MAC [20]byte
- }
- // EncryptData解密后类型
- type XlogHandshakePackageData struct {
- NewIv [16]byte // 新的IV,用于后续通讯
- DevUuid [36]byte // 设备UUID
- }
- type XlogHandshakePackage struct {
- MagicWord uint32 // Magic word
- CmdLen uint32 // 数据长度 = XlogPackage总长度 - 8(MagicWord长度)
- EncryptData [64]byte //
- }
- type XlogHandshakeResponsePackage struct {
- MagicWord uint32 // Magic word
- EncryptData [64]byte //
- }
- type XlogPackageHeader struct {
- MagicWord uint32 // Magic word
- CmdLen uint32 // 数据长度 = XlogPackage总长度 - 8(MagicWord长度)
- MainCmd uint8 // 命令类型 CmdType - MainCmd
- SubCmd uint8 // 命令类型 CmdType - SubCmd
- ControlBitData uint16 // 控制位数据
- DstServiceName [12]byte // 目标服务名称
- ToBeSendLen uint32 // 发送这包之前,已经缓存的数据,这个值通常要是0,表示网络非常好,没有缓存数据
- IgnoredLen uint32 // 忽略的字节数
- UpTime uint32
- }
- type XlogPackage struct {
- Header XlogPackageHeader
- EncryptPayload []byte // 数据
- }
- // 必须用构造函数NewXlogPackageParser创建
- type XlogPackageParser struct {
- crypt XlogEncrypt
- ctx *ConnectContext
- cmdResultStr string
- Handshake bool // 连接是否已握手
- Buffer []byte // 接收数据缓存buffer,数据可能不完整,需预处理
- }
|