1package packets 2 3import ( 4 "fmt" 5 "io" 6) 7 8//PubrecPacket is an internal representation of the fields of the 9//Pubrec MQTT packet 10type PubrecPacket struct { 11 FixedHeader 12 MessageID uint16 13} 14 15func (pr *PubrecPacket) String() string { 16 str := fmt.Sprintf("%s", pr.FixedHeader) 17 str += " " 18 str += fmt.Sprintf("MessageID: %d", pr.MessageID) 19 return str 20} 21 22func (pr *PubrecPacket) Write(w io.Writer) error { 23 var err error 24 pr.FixedHeader.RemainingLength = 2 25 packet := pr.FixedHeader.pack() 26 packet.Write(encodeUint16(pr.MessageID)) 27 _, err = packet.WriteTo(w) 28 29 return err 30} 31 32//Unpack decodes the details of a ControlPacket after the fixed 33//header has been read 34func (pr *PubrecPacket) Unpack(b io.Reader) error { 35 var err error 36 pr.MessageID, err = decodeUint16(b) 37 38 return err 39} 40 41//Details returns a Details struct containing the Qos and 42//MessageID of this ControlPacket 43func (pr *PubrecPacket) Details() Details { 44 return Details{Qos: pr.Qos, MessageID: pr.MessageID} 45} 46