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:]} }