123456789101112131415161718192021222324252627282930313233343536373839 |
- package udp
- import (
- "../com"
- "bytes"
- )
- const (
- SplitChar = ','
- MaxDataLen = 1024
- PackSize = 1100
- )
- type DataPacket struct {
- Seq uint
- Inner int
- Payload []byte
- }
- type EventPacket struct {
- Event string
- Data *DataPacket
- }
- func UnpackEventPacket(data []byte) *EventPacket {
- if index := bytes.IndexByte(data, SplitChar); index != -1 {
- event, payload := string(data[:index]), unpackDataPacket(data[index+1:])
- return &EventPacket{Event: event, Data: payload}
- }
- return nil
- }
- func unpackDataPacket(data []byte) *DataPacket {
- if len(data) == 0 {
- return nil
- }
- seq, inner := com.BytesToUint(data[0:4]), com.BytesToInt(data[4:8])
- return &DataPacket{Seq: seq, Inner: inner, Payload: data[8:]}
- }
|